Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mustafa_90
Üye
Mesajlar: 15
Kayıt: 03 Eki 2008 12:45

Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen mustafa_90 »

Merhaba;
Mesela Buton gibi bir componentlerin mouse move olayı sadece mousenin butonun üzerine gelmesi ile tetikleniyor. Fakat şeklimiz tam dikdörtgen veya kare olmasaydı ne olacaktı ?
TGraphicControl veya TCustomControl nesnelerini devralarak bazır görsel componentler yapmaya çalışıyorum fakat boyutlar ya kare yada dikdörtgen olmak zorunda oluyor. Arka planı saydam yapsam dahi componentin alanı dikdörtgen oluyor. Bu sorunu nasıl halledebilirim. Mouse move içinde çizdiğim şeklin koordinatlarını kontrol etmek istemiyorum. Bir component var elimde onu gözledim ve böyle bir olay kullanmamış (en azından ben göremedim) ama çok güzel bir şekilde çalışıyor....
Örnek
"L" harfimiz olsun. Mouse sadece çizgiler üzerine gelince event tetiklenecek ama nasıl ?

Yardımlarınız için şimdiden teşekkürler...
ibrahimcoban
Üye
Mesajlar: 163
Kayıt: 11 Eki 2005 10:44
İletişim:

Re: Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen ibrahimcoban »

Gerekli komut PtInRegion windows apisi bir zamanlar aşağıda tartışılmıştı.

viewtopic.php?f=2&t=20314&hilit=PtInRegion
http://ibrahimcoban.com/
Lazarus, Kol-Ce,Delphi ve C#
mustafa_90
Üye
Mesajlar: 15
Kayıt: 03 Eki 2008 12:45

Re: Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen mustafa_90 »

Tekrar çok teşekkürler.
mustafa_90
Üye
Mesajlar: 15
Kayıt: 03 Eki 2008 12:45

Re: Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen mustafa_90 »

http://angusj.com/delphi/
Adresindeki "Drawing Objects - Version 3.1.1" isimli componenti inceliyorum fakat PtInRGN gibi bir fonksiyon kullanımı yok. Ama bu dediğim olayı gerçekleştirmiş :shock: Acaba bi bakabilir misiniz.
ibrahimcoban
Üye
Mesajlar: 163
Kayıt: 11 Eki 2005 10:44
İletişim:

Re: Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen ibrahimcoban »

Evet Angus Hoca bunu kullanmış

Kod: Tümünü seç

function PtInPolygon(const pts: array of TPoint; pt: TPoint): Boolean;
var
  i,j : integer;
begin
  Result := False;
  j := high(pts);
  for i := low(pts) to high(pts) do
  begin
   if ((pts[i].Y <= pt.Y) and (pt.Y < pts[j].Y)) or
      ((pts[j].Y <= pt.Y) and (pt.Y < pts[i].Y)) then
        if (pt.X < (pts[j].X - pts[i].X) * (pt.Y - pts[i].Y) /
            (pts[j].Y - pts[i].Y) + pts[i].X) then Result := not Result;
    j := i;
  end;
end;
http://ibrahimcoban.com/
Lazarus, Kol-Ce,Delphi ve C#
mustafa_90
Üye
Mesajlar: 15
Kayıt: 03 Eki 2008 12:45

Re: Kare, Dikdörtgen gibi olmayan şekillerin Mouse Event ları...

Mesaj gönderen mustafa_90 »

Tekrar çok teşekkürler. Okadar göz gezdirdimki artık görememe durumuna gelmişim :D
Cevapla