resim üzerinde iki nokta arasına line çizmek??

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen forumsad »

arkadaşlar kameradan aldığım resimde iki nokta belirleyeceğim...

örnegin x(25,30)
y(50,60)

bir butona tıkladığımda bu iki noktayı birleştiren ve resim kenarına kadar devam eden yani resmi ikiye bölen bir line çizdirmek istiyorum
forumlarda bir örnek bulamadım nasıl başlayacağımı bilemediğim için örnek bir şeylerde yapamadım...

bu konuda temel seviye bir şeyler yardımcı olursanız sevinirim

saygılarımla
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen CiTiZEN »

doğru anladıysam :ara canvas

Kolay gelsin.
UWESIS CORPORATION
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen thelvaci »

TCanvas sınıfının MoveTo ve LineTo metodları istediğinizi yapmanızı sağlayacaktır. Birinci noktaya MoveTo ile konumlanıp ardından LineTo ile çizimi gerçekleştirebilirsiniz. Küçük bir örnek aşağıdadır;

Kod: Tümünü seç

  
  Canvas.Brush.Color := clRed;
  Canvas.Ellipse(25, 30, 30, 35);
  Canvas.Ellipse(50, 60, 55, 65);

  Canvas.Pen.Color := clBlue;
  Canvas.MoveTo(25, 30);
  Canvas.LineTo(50,60);
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen unicorn64 »

...resim kenarına kadar devam...
anladığım kadarıyla sadece o iki noktayı birleştirmek istemiyor arkadaş, o iki noktadan geçen ve resim kenarına kadar devam eden bir doğru çizmek istiyor...

koda dökemedim ama bkz iki noktadan geçen doğru denklemi :)
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen qamyoncu »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
DrawLine(image1.Picture.Bitmap,65,20,65,50);
end;

procedure TForm1.DrawLine(bmp: TBitmap; X1, Y1, X2, Y2: Integer);
var
m: Double; //eğim
p1, p2: Integer; //Unknown values
begin
if (x2=x1) then
  m:=99999999999999
else
  m:=(y2-y1)/(x2-x1);
if (m<bmp.Height/bmp.Width) and (m>-bmp.Height/bmp.Width) then
  begin
    if (x2=x1) then
      begin
        p1:=999999999;
        p2:=999999999;
      end
    else
      begin
        p1:=round(((0-x2)*(y2-y1))/(x2-x1)+y2); // X=0, so Y is unknown value.
        p2:=round(((bmp.Width-x2)*(y2-y1))/(x2-x1)+y2); //X=bmp.Width, ...
      end;
    bmp.Canvas.MoveTo(0,p1);
    bmp.Canvas.LineTo(bmp.Width,p2);
  end
  else
  begin
    if (y2=y1) then
      begin
        p1:=999999999;
        p2:=999999999;
      end
    else
      begin
        p1:=round(((0-y2)*(x2-x1))/(y2-y1)+x2);
        p2:=round(((bmp.Height-y2)*(x2-x1))/(y2-y1)+x2);
      end;
    bmp.Canvas.MoveTo(p1,0);
    bmp.Canvas.LineTo(p2,bmp.Height);
  end;
end;
birkaç basit matematik işlemi sadece :)
kolay gelsin
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen forumsad »

unicorn64 arkadaş tam olarak problemi tanımladı...

qamyoncu arkadaşın verdiği örneği uyguladığımda < DrawLine > da hata veriyor sanırım DrawLine'ın ne olduğunu bilmiyor..

saygılarımla..
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen unicorn64 »

direk kopyala yapıştır yaptıysan ondandır. @qamyoncu işlemi form1 altında tanımlanan bir procedure altında yapmış..
kodu incelemedim işinizi görür mü bilmem ama denemek için, form1 in tanım kısmında (unitin başındaki kısımda)

Kod: Tümünü seç


  TForm1 = class(TForm)
     procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    procedure DrawLine(bmp: TBitmap; X1, Y1, X2, Y2: Integer);  // bu satırı eklemelisin...
  end;
    
yazarak form1 sınıfına DrawLine tanımını eklemiş olursunuz...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: resim üzerinde iki nokta arasına line çizmek??

Mesaj gönderen forumsad »

tamam oldu çok teşekkürler şimdi kodları inceleyerek mantığı çözeceğim inşallah


çok teşekkürler
Cevapla