Showing posts with label WPF. Show all posts
Showing posts with label WPF. Show all posts

Wednesday, September 2, 2015

Sesuaikan Posisi Slider Dengan Skala Zoom Image

Dalam video kali ini saya hanya ingin mendemonstrasikan bahwa dalam WPF itu kita bisa mengatur agar posisi slider proporsional dengan nilai zoom dari image. Pada aplikasi yang dibuat, terdapat sebuah slider dan beberapa buah image. Jadi hanya ada satu slider sementara image nya ada banyak. Persoalannya adalah bagaimana agar si slider tadi keep-track dengan skala image. Jadi Ketika slider tersebut di gerakan, perubahan skala pada image itu berubah secara kontinyu.

Bayangkan jika slidernya nilainya maksimal, sementara Image zoom-nya minimum, maka ketika kita menyentuh slider akan terjadi lompatan perubahan skala image yang tadinya dari sangat kecil menjadi sangat besar. Untuk menghindari ini, maka skala image dan slider nya mesti di sinkronkan.

Thursday, August 20, 2015

Menggantikan Recursive Call dengan Stack

Salah satu hal yang paling sering di-identikkan dengan recursive dalam dunia pemrograman adalah bagaimana membaca struktur dari directory. Secara umum struktur dari directory adalah pertama kita melakukan iterasi terhadap root directory. Dalam  root directory terebut kita kemudian membagi jenis item di dalamnya, apakah masuk ke dalam file atau directory. Jika masuk ke dalam kategori file, maka langsung set sebagai item pada Treeview. Jika masuk kategori folder, panggil kembali method-nya untuk melakukan  iterasi yang sama.

Masalahnya adalah teknik ini akan mengakibatkan akumulasi pemanggilan terhadap method pada memory stack. Dan akibatnya terjadi StackOverflow. Untuk mengatasinya kita menggunakan teknik lain yakni dengan menggunakan struktur data Stack. Dengan Stack ini pertama-tama kita iterasi semua folder pada root directory, masukkan ke dalam Stack. Item yang terakhir dimasukkan kemudian dikeluarkan dari stack (di-pop) untuk diperiksa isinya. Jika terdapat folder di dalamnya, maka masukkan folder tersebut ke dalam stack. Jika file yang ditemukan, langsung isi elemen dari TreeView dengan file tersebut.

Misalnya elemen stack tersebut adalah folder dengan urutan A|B|C|D. Jika kita sudah mem-pop folder A. Maka kita akan menggantikan posisinya dalam stack dengan sub-folder dari A dengan mem-push sub folder tersebut ke dalam stack. Sehingga urutan stack berubah  menjadi A3|A2|A1|B|C|D. Kemudian kita mem-pop A1 dan diperoleh sub-folder di dalamnya. Kita mem-push sub folder tersebut ke dalam stack dan struktur stack berubah menjadi A33|A32|A31|A2|A1|B|C|D. Karena A3 hanya terisi file, maka tinggal kita pop untuk dimasukkan sebagai item di Treeview,  demikian juga A32. Jadi Struktur stack berubah menjadi A31|A2|A1|B|C|D. Kita masuk pada A31, dan ternyata isinya ada sub folder lain, dan lantas kita push pada stack dan stack berubah menjadi A312|A311|A2|A1|B|C|D. Hal ini dilakukan seterusnya sehingga isi dari stack menjadi kosong dan semua folder dan sub folder beserta item di dalamnya masuk ke dalam Treeview.