Canvas Üzerinde Tıklanan Noktalar Arasına Line Çizdirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
gokhan1963
Üye
Mesajlar: 2
Kayıt: 26 Ara 2016 05:38

Canvas Üzerinde Tıklanan Noktalar Arasına Line Çizdirme

Mesaj gönderen gokhan1963 »

Arkadaşlar merhaba Delphi de Canvas üzerinde tıkladığım noktalar arasına line çizdirmek istiyorum.Bunun için şöyle bir code yazdım.

Kod: Tümünü seç

procedure TForm1.Image1DblClick(Sender: TObject);
begin
ShowMessage('Aynı Yere İkinci Noktayı Koyamazsınız!');
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
{$j+}
Const
n:Integer=-1;
 var
kontnok:Array of TPoint;
yatay,dikey:Integer;
begin
if Button=mbRight Then
begin
Image1.Canvas.FillRect(Rect(0,441,777,0));
n:=-1;
FillChar(kontnok,length(kontnok),#0);
end;
if Button=mbLeft Then
begin
n:=n+1;
SetLength(kontnok,n+1);
yatay:=X;
dikey:=Y;
kontnok[n].X:=yatay;
kontnok[n].Y:=dikey;
Image1.Canvas.pixels[yatay,dikey]:=clred;
Image1.Canvas.pixels[yatay+1,dikey+1]:=clred;
Image1.Canvas.pixels[yatay-1,dikey+1]:=clred;
Image1.Canvas.pixels[yatay-1,dikey-1]:=clred;
Image1.Canvas.pixels[yatay+1,dikey-1]:=clred;
Image1.Canvas.pixels[yatay+1,dikey]:=clred;
Image1.Canvas.pixels[yatay-1,dikey]:=clred;
Image1.Canvas.pixels[yatay,dikey+1]:=clred;
Image1.Canvas.pixels[yatay,dikey-1]:=clred;
if n>0 then
begin
Image1.Canvas.MoveTo(kontnok[n-1].X,kontnok[n-1].Y);
Image1.Canvas.LineTo(kontnok[n].X,kontnok[n].Y);

end;
end;
end;

end.
Ancak dizinin bir önceki elemanının koordinatları 0,0 a dönüştüğü için çizgiyi tıkladığım noktalar arasında değilde 0,0 noktasından son tıkladığım noktaya çiziyor.Yardımlarınızı bekliyorum.
Ekran Alıntısı3.PNG
Ekran Alıntısı3.PNG (750 Byte) 742 kere görüntülendi
Kullanıcı avatarı
loaded
Üye
Mesajlar: 126
Kayıt: 12 Eki 2010 09:45
Konum: Konya
İletişim:

Re: Canvas Üzerinde Tıklanan Noktalar Arasına Line Çizdirme

Mesaj gönderen loaded »

Merhaba
-Öncelikle koordinat değerlerini tutan değişkenleri global olarak tanımlamalısınız bunun için public bloğunu kullanmalısınız yada direk form altında tanımlayabilirsiniz.

Kod: Tümünü seç

var
Form1: TForm1;
kontnok:Array of TPoint;
-Çizgi 2 noktadan oluştuğu için her click olayında tek,çift nokta kontrolu yaptırmalısınız. Çiftse doğru çizimini yap gibi ...
-Çizimleriniz ardışık şekilde birbirileriyle bağlantılı olacaksa, doğru çizimini yaptıktan sonra 2.noktanın kooordinatlarını 1.noktaya aktarmalısınız. Yine bu işlemi bi değişkenle kontrol etmelisiniz.
Kalk ve işe yarar bir şey yap! Çünkü Allah (c.c.) yeniden başlayanların yardımcısıdır.
gokhan1963
Üye
Mesajlar: 2
Kayıt: 26 Ara 2016 05:38

Re: Canvas Üzerinde Tıklanan Noktalar Arasına Line Çizdirme

Mesaj gönderen gokhan1963 »

Cevabınız için çok teşekkür ederim.Dediğiniz gibi koordinat değerlerini tutan değişkeni global olarak tanıtıp çizim için verdiğiniz tavsiyeleri uygulayınca problem çözüldü.
Cevapla