TWincontrol özelliği olan Image component ı arıyorum

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen freeman35 »

Component olmak zorunda değil. Yapmak istediğim, TImage ın üzerinde TControl den türetilmiş classları koymam gerekiyor, yani benim class ıma parent olacak ve resim(leri) gösterecek bir class, yöntem arıyorum. Karmaşık vs işlemler olmayacağından ücretli bileşenlere gerek yok, birde bu basit iş için gavura para vermek zorunda kalmayayım.
Öneri yada bilgisi olan var mı?
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen ikra »

Kod: Tümünü seç

tmyimage = class(twincontrol)
Protected
Procedure wm_paint()...
end;

Procedure wm_paint()...
Var
  Dc: hdc;
  bmp: tbitmap;
Begin
  Dc := getwindowdc(handle);
  Bmp := tbitmap.create;
  Try
    Cancas.handle := dc;

    Bmp.loadfromfile(...);
    bitbtl(dc, 0, 0, bmp.width, bmp.height, bmp.canvas.handle, 0, 0, srccopy);
  
    Canvas.handle := 0;
  Finally
    Bmp.free;
    Releasedc(handle, dc);
  end;
End;
Image boyu wincontrol'ün boyutuna denk degil ise bitbtl yerine strechbtl kullanabilirsin.
Wm_paint mesaji yerine paintwindow prosedürünü override yapabilirsin. Birden fazla yöntem mümkün.
Cepten yazdigim icin kod düzenlemesi yapamiyorum.
kıdemsiz üye
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen freeman35 »

Bunlardanda pratik yöntem, Panel üstüne TImage koydum, ve eski kodlarda az değişiklikle, owner olarak timage ı taşıyan paneli benim TControl lere parent yaptım. Benim için önemli olan TControl lerin onmouse evetlerinin tetiklenmesi idi. TImage bunları ezmedi, buda işimi gördü.
EyvAllah saolasın.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen ikra »

TImage nesnesi üzerinden de mouse hareketlerini yakalayabilirsin. Kulagi tersten göstermeye benzer ama sonuca ulasabilirsin : ))
kıdemsiz üye
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen fesiharslan »

freeman35 yazdı:Bunlardanda pratik yöntem, Panel üstüne TImage koydum, ve eski kodlarda az değişiklikle, owner olarak timage ı taşıyan paneli benim TControl lere parent yaptım. Benim için önemli olan TControl lerin onmouse evetlerinin tetiklenmesi idi. TImage bunları ezmedi, buda işimi gördü.
EyvAllah saolasın.
Merhaba;
Panel ---> TImage fikrinizden yola çıkarak, bir component oluşturdum.Fikir sizin olduğu için tüm telif haklarını da size devrediyorum. :)

Örnek Ekran Görüntüsü

Resim

Component ve Örnek Uygulama Linki: https://mega.nz/#!6AMHxL5S!dwASsghZQ__T ... Q7h0sBxo2M

İyi Çalışmalar Hocam.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen freeman35 »

@ikra, Programcı tembel olmalı :D ki en kolay en sağlam yöntemi bulabilsin :D TImage üzerinde mouse un her pixel harektinde (x,y) TImage üzerindeki belirlenmiş yerlerdemi (25-32 kadar farklı alan), hangisinde vs gibi işleri döngüyle yapmak gerekir. Bunun yerine TControl ün onmouseEnter, ..lieave, ..Up eventlerinden bunu zaten alıyorum. Sadece ilgili yere konumlandırmak yetiyor, ayrıca anchor ları da ayarladınmı panel size ı değişsede TControl ler de değiştiğinden problem yaşanmıyor.
Örnek: @fesiharslan ın yukarıdaki screenshot larda, Tux un göz bebeklerinin üzerine mouse gelince, gözbebeklerinin rengi değişsin mesela :)
@fesiharslan, Allah razı olsun. Varsa, benim hakkım helaldir. emek senin, dolayısıyla tasarruf sana aittir.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen anonymousdelphicoder »

Hem Flicker Free hem TWinControl + hızının tadından yenmeyen Layer mantıklı bir Grafik kütüphanesi, adı ise Graphics32.
Aşağıdaki linkten SourceForge den son halini indirebilirsin, Ayrıca Seattle Paket destekli, tabi sizi .inc dosyalarında versiyon tanımlaması yaparak Berlin'ede yükleyebilirsiniz.

https://sourceforge.net/p/graphics32/code/HEAD/tree/

Sevgilerle.
anonymousdelphicoder
Üye
Mesajlar: 152
Kayıt: 16 May 2014 11:23

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen anonymousdelphicoder »

Anladığım kadarıyla örneğin, bir TImage nin üstünde TImage varsa ve siz yine alttaki owner TImage nin sınırları içerisinde iseniz Leave ve Enter olaylarının çalışmasını istiyorsunuz, böyle birşey daha önce yaptım bunun için Owner için Message Redirecting yapmanız gerekmekte.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: TWincontrol özelliği olan Image component ı arıyorum

Mesaj gönderen freeman35 »

Lazarus ta BGRA ile yapmıştım, VirtualScreen e en yakın TImage denk geliyor, bunun üzerine canvas ile bitmap leri çiziyorum. Bu sürekli olan bir şey değil, Boyadığım bitmap in yerini bilmem ve mouse ile üzerine geldiğinde ve tıklandığında işlem yapmam gerek. İşin basiti bu. Code yazmadan yada en az kod ile ve hatalarla uğraşmamak için TControl den bir class mouse eventlerini yakalamamı sağlıyor. lazarusdan delphiye taşındığımdan yeni kodlarla uğraşma işini ötemeleyi tercih ediyorum ki projeyi tekrar bitirebileyim.
Önerin için teşekkürler, kaydettim. projeyi bitirdikten sonra geriye dönük güncellemeler de Graphics32 inceliycem. Şimdilik timage ve bitmap işimi çözdü, yani o form u bitirecek aşamadayım. tekrar başa sarmak şu an için zaman kaybı, ama ileride gerekecek, her nekadar panel in doublebuffer ı True olsada arada gıpraşıyola :D ezmak gerek bunları.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla