elips çizdirmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

elips çizdirmek

Mesaj gönderen Lord_Ares »

merhaba,
masa ustundeki herhangi bir kısayolun etrafında mouse ile daire çızdirmek isityorum. ( handle numarısı bilinen bir pencerede daire nasıl çizdiririm)
teşekkürler
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: elips çizdirmek

Mesaj gönderen CiTiZEN »

ben forma elips çizdirmek için canvas.ellipse(0,0,10,10) gibi bir kod kullanıyorum.
UWESIS CORPORATION
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Re: elips çizdirmek

Mesaj gönderen Lost Soul »

var
C : TCanvas;
Begin
C:=TCanvas.Create;
C.Handle:=GetWindowDC(0); // Desktop
C.TextOut(100,100,DateTimeToStr(now));
//veya
C.Ellipse(0,0,20,20)
C.Free;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: elips çizdirmek

Mesaj gönderen Lord_Ares »

arkadaşlar verdiğiniz bilgi için teşekkürler sanırım yanlış anlattım, fakat ben form uzerinde mouse ile daire çizmek istiyorum
yani bir nesnenin etrafında mouse dondureceğim.
sizin verdiğiniz direk elips çizdiyor.
bana şuda olabilir mesala formda bir elips var mouse bunun cizgisi uzerinde takip ederek te elips te çizebilir.
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: elips çizdirmek

Mesaj gönderen qamyoncu »

Bununla ilgili bir konu tartışılmıştı yanlış hatırlamıyorsam ben bulamadım ama bi arat istersen belki bulabilirsin.

Kısaca açıklamam gerekirse;

Delphi'deki Elips fonksiyonu matematiksel formüllere dayanarak çizim yapar.

Bir elipsin X ekseni üzerindeki yarıçapına a, Y ekseni üzerindeki yarı çapına b dersek ve merkezi x1,y1 noktası olursa; bu elipsin formülü:

(x-x1)^2 / a^2 + (y-y1)^2 / b^2 = 1

Tek yapmamız gereken bu formülü programa uygulamak. İstediğimiz farenin elips çizmesi ise GetCursorPos(X,Y) fonksiyonu ile fareyi istediğimiz yere götürücez, istediğimiz yeri ise formülde yerine koyarak uygulayacaz. Ve tabi bunu elipsin her noktası için yapmamız gerekmekte yani bir for döngü içerisinde sürekli hesaplatıp fareyi istediğimiz yere götürebiliriz.

Kolay gelsin.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: elips çizdirmek

Mesaj gönderen Lord_Ares »

uhh :) o sanırım beni aşıyo, yine gitti benim proje .
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: elips çizdirmek

Mesaj gönderen qamyoncu »

Hayır tabiiki gayet basit :)

Fare harekete en sol noktadan başlayacak diyelim. O noktanın koordinatları(X,Y) x1-a,y1 olur. daha sonra fare saat yönünde hareket etsin. Taa ki saat 3 olana kadar yani en sağ noktaya gidene kadar, X sürekli artacak ve Y değişecek. X Ne kadar artacak? Toplamda 2a kadar. O zaman:

Kod: Tümünü seç

for x:= x1-a to x1+a do
  begin
    Application.ProcessMessages;
     y:=y1-round(sqrt(sqr(b)*(1-sqr((x-x1)/a))));           //Bi önce mesajımda bahsettiğim formülün Y'sinin yalnız bırakılmış halidir.
     // Y'mizi de bulduk, X'imiz de belli.
    SetCursorPos(X,Y);
    sleep(20);
  end;

for x:= x1+a downto x1-a do
  begin
    Application.ProcessMessages;
     y:=y1+round(sqrt(sqr(b)*(1-sqr((x-x1)/a))));           //Bi önce mesajımda bahsettiğim formülün Y'sinin yalnız bırakılmış halidir.
     // Y'mizi de bulduk, X'imiz de belli.
    SetCursorPos(X,Y);
    sleep(20);
  end;


Bu kod ile atlamalar olacaktır. Çünkü X'i sabit iken Y'si değişen noktalar vardır.
Fakat a>b durumunda çok anormal bir elips olmadıkça bu sorun çıkarmaz bence.
Genel olarak işini görür umarım.. :)
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: elips çizdirmek

Mesaj gönderen Lord_Ares »

wow :) harbiden süperdi. çok teşekkür ediyorum. Sanırım projeme sayende devam edebileceğim. Hemen denemek isityorum
Cevapla