elips çizdirmek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
elips çizdirmek
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
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
Re: elips çizdirmek
ben forma elips çizdirmek için canvas.ellipse(0,0,10,10) gibi bir kod kullanıyorum.
UWESIS CORPORATION
Re: elips çizdirmek
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;
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;
Re: elips çizdirmek
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.
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.
Re: elips çizdirmek
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.
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..'
'Yükseldikçe küçülen bir uçurtma..'
Re: elips çizdirmek
uhh
o sanırım beni aşıyo, yine gitti benim proje .

Re: elips çizdirmek
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:
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..

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..'
'Yükseldikçe küçülen bir uçurtma..'
Re: elips çizdirmek
wow
harbiden süperdi. çok teşekkür ediyorum. Sanırım projeme sayende devam edebileceğim. Hemen denemek isityorum
