Sıfırdan bir grafik kitaplığı oluşturma - sayfa 15

 
Diğer her şey harika, devam et.
 
Sizin için tuval üzerinde kontroller oluşturmak çok basittir:

1. Canvas sınıfından birkaç çizim fonksiyonunu çıkarın, yani: dikey çizgi , yatay çizgi. dikdörtgen, doldurulmuş dikdörtgen, metin.

2. Her elemanı çizmek için bir fonksiyon yazın: void Button(), void Checkbox()... vb.

3. Çizim öğeleri için işlevler'de, istenen denetimin yapısını istenen tuval üzerine "çizdiğiniz" çizim işlevlerine (çizgiler, dikdörtgenler) yapılan çağrı kümelerini içerir.

4. Oluşturulan her öğenin bir örneği kendi penceresine eklenmelidir.

5. Oluşturulan her örneğin özellikleri (geçerli X, Y, X_SIZE, Y_SIZE...), diğer işlevlerin okuyabilmesi/değiştirebilmesi için bir dizi veya yapıda saklanmalıdır.

Peki, o zaman tırtıllı yol boyunca gideceksiniz ....)

Ve hepsi tuval üzerinde, unutmayın.

 
Peki ya ana arka plana çizilen nesnenin altında olabilecek başka nesnelere ihtiyacınız varsa?
 
Aliaksandr Hryshyn :
Peki ya ana arka plana çizilen nesnenin altında olabilecek başka nesnelere ihtiyacınız varsa?
Örnek vermek. Farklı çözümlere sahip birçok farklı durum vardır.
 
Реter Konow :
Örnek vermek. Farklı çözümlere sahip birçok farklı durum vardır.

Benim durumumda, büyük olasılıkla tuval yeterlidir, tavsiye ettiğiniz gibi yapacağımı düşünüyorum.

Ayrıca, tuval için zaten minimum destek var
 
Her pencere ayrı, bağımsız bir tuvaldir.

Bir pencere oluşturmak diğer öğelerden daha az basit değildir:

1. Pencere, FilledRectangle() işlevini (CCanvas sınıfından) çağırarak ve onlara şablon veya özel değerler geçirerek oluşturulan tuval üzerine sırayla çizilen birkaç sıradan dikdörtgenin basit temel özelliklerine sahiptir.

2. Pencere, elemanlarından önce çizilir. Bunun için özel pencere çizim fonksiyonu Draw_window(x, y, w, h) sorumludur; örneğin, pencere yapısını oluşturmak için gerekli sayıda FilledRectangle() öğesini çağırır.

3. Ardından kontrolleri çizen fonksiyonlar çağrılır. Her biri bir pencere gibi inşa edilmiştir - sırayla çizilmiş dikdörtgenler ve çerçevelerden.

4. İşlev çağrılarak oluşturulan her öğenin her örneğinin özellikleri, aşağıdakiler de dahil olmak üzere diğer işlevler için kullanılabilen herhangi bir bellek türevine yazılır:

İmlecin çizilen elemanın koordinatları üzerinde olması olayını yakalayan, her bir imleç hareketi olayında, bu pencerede çizilen ve gösterilen tüm elemanların koordinatları arasında döngü yapan ve hemen altındakini bulan bir fonksiyon.

İmlecin altındaki öğe üzerindeki tıklama/bırakma olayını yakalayan ve o öğenin parametrelerinin (renk, simge...) değerlerini değiştiren başka bir işlevi çağırarak durumunu (etkileşimli ise) değiştiren bir işlev ve yeniden çiziyor.

Yeni başlayanlar için, bu yeterli.

 
Roman :

HFT için, sipariş defteri hacimlerinin ve sipariş akışının grafiksel bir analizini oluştururken 3D'nin faydalı olacağını düşünüyorum.
Ancak bu tür bilgilerin nasıl yorumlanacağı, nüfuz etmedi.

bu nerede?

 
Aralarında iki ana olanın ayırt edilebileceği birkaç kontrol kategorisi vardır:

1. Dekoratif - çizgiler, çerçeveler, dikdörtgenler, simgeler...

2. "Parametrik" - yani. parametreye sahip olmak.

İkinci tip iki alt kategori ile temsil edilir:

1. Giriş elemanları - farklı parametre türleri için tasarlanmış grafik "mekanizmaların" değerini değiştirme yeteneği sağlar. Bu öğeler birkaç gruba ayrılır, örneğin, mantıksal durum doğru / yanlış (bool) bir düğme, bir onay kutusu ve bir radyo düğmesi ile ayarlanır ve aralık sınırları ve bir adım ile bir parametrenin değeri bir kaydırıcı tarafından kontrol edilir veya giriş alanı . Her parametre türü için, değerini benzer şekilde değiştirmenize izin veren aynı türden birkaç öğe vardır.

2. Çıktı öğeleri - değeri sayısal, metinsel veya grafiksel olarak dönüştürülmüş başka bir biçimde yayınlayın. Bunlar arasında: tablo hücreleri, metin etiketleri, ilerleme çubukları. Göstergeler ve grafikler de bu kategoriye aittir ve tek farkları büyük hacimli çıktı verilerine uyarlanabilirlikleridir.


Daha önce de söylediğim gibi, çizim öğeleri basit ve anlaşılır bir şeydir. Aslında, bu sadece değerler içeren bir dizinin işaretlenmesidir. CCanvas sınıfında tüm işlevler mevcuttur - çizgiler, dikdörtgenler, çerçeveler. İşlevlerin yalnızca, daha sonra bir kaynakta depolanan ve OBJPROP_BMPFILE özelliği kullanılarak BITMAP_LABEL nesnesine bağlanan bir diziyi geçirmesi gerekir.

Bu sınıfın sargısı, bir köpeğin beşinci bacağı gibi araya giriyor. (Muhtemelen bu yüzden şimdiye kadar kimse tuval üzerine kitaplık yapmamış, çünkü yukardan "ineğe sadece eyerle binmek!" demişler. ;)).