çizilen şekile komut verme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
çizilen şekile komut verme
mrb aslında nasıl aratacağımı ne kullanacağımı bilmediğim için yönlendirmeye ihtiyacım var. benim yapmak istediğim olay mause ile bir şekil çizme yani bir noktadan başlayıp tekrardan o noktaya geldiğimde bir şekil oluşturma daire olur dikdörtgen olur üçgen olur açıkçası bir alan yaratma ve bu alana tıklandığında komut çalıştırabilmek yada onun seçildiğini bilmek istiyorum bu bir image olur button olur başka companent olur artık ne ile yapılabiliyorsa yada nasıl yöntemle yani söyle örnek verim türkiye haritasını elimle çizip illerede komutlar vermek istiyorum izmire tıklandı ve izmir alanının rengini değişebilmek gibi konuyla ilgili bilgisi uygulaması olan arkadaşlar beni yönlendirirse çok sevinirim.
-
- Üye
- Mesajlar: 163
- Kayıt: 11 Eki 2005 10:44
- İletişim:
Merhaba
Bunu Rgn fonksiyonlarıyla yapabilirsin. Sana fikir vermek amacıyla basit bir kod veriyorum.
Kolay gelsin..
Bunu Rgn fonksiyonlarıyla yapabilirsin. Sana fikir vermek amacıyla basit bir kod veriyorum.
Kod: Tümünü seç
var
Form1: TForm1;
al :array[0..4] of TPoint;
r :HRGN;
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if PtInRegion(r,x,y) then
begin
Canvas.Pen.Color:=clRed;
Canvas.Polyline (al);
end else
begin
Canvas.Pen.Color:=clBlack;
Canvas.Polyline (al);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
al[0].X:=10;
al[0].Y:=20;
al[1].X:=100;
al[1].Y:=20;
al[2].X:=50;
al[2].Y:=100;
al[3].X:=10;
al[3].Y:=100;
al[4].X:=10;
al[4].Y:=20;
r:=CreatePolygonRgn(al,4,ALTERNATE);
end;
üstad harika oldu tam istediğim gibi mükemmelsin
yanlız bu alanı mesela mavi yapmak istiyorum ve bu alanın ölçüsünün ne kadar olduğunu hesaplıyabilirmiyim birde tek çizimde değilde google mapta yada netcadte görmüşsündür noktalar koyarak en son başlangıç noktasına geldiğimde yani adım adım yaratarak yapabilirmiyim yani nokta koydukça diğer nokta arasını çizerek alan yaratabilirmiyim. 


- fatihtolgaata
- Üye
- Mesajlar: 382
- Kayıt: 04 Mar 2004 09:46
- Konum: K.çekmece / İstanbul
- İletişim:
mrb sorun galiba benim bu konuyla ilgili hiç ama hiç bilgim olmaması ve yönlendirilmeye ihtiyacımın olması pek kaynak bulamıyorum bu konu üzerinde bu komutlar içinde açıkçası ben oluşan alanın piksel baz alınarak ölçeklendirilerek ve sabit piksel uzunlukları belirnenip hesaplanarak alanı nasıl hesaplanacağını yada bu alanın nasıl içinin rengini değiştirebileceğimi bilmiyorum eminim ki komutu yöntemi var ama ben bilmiyorum burda bilen arkadaşlar varsa yönlendirmesini bekliyorum elbette rgn fonsiyonlarını incelemeye başladım ve tek tek denemeye başladım ama amacım dediğim gibi burda konuyla ilgili bilgili arkadaşların deneyim bilgi ve daha önce uyguladıkları daha geniş düşünebildiklerini bilgilerini dağarcığıma ekleyebilmek ve uygulayabilmek.
- fatihtolgaata
- Üye
- Mesajlar: 382
- Kayıt: 04 Mar 2004 09:46
- Konum: K.çekmece / İstanbul
- İletişim:
Alan hesaplamak için piksel üzerinden gitmen yanlış olur. Yapman gereken eklenen noktaların koordinatları ile oluşan poligonun alanını, bu koordinatlar yardımı ile hesaplaman daha doğru olur. Eklenen her koordinat (X1,Y1), (X2,Y2), ..... , (Xn, Yn) şeklinde olacak. Bunları bir dizide tutabilirsin. Eğer "ibrahimcoban"nın kodlarını incelersen, orada bu hadiseyi göreceksin. Bu koordinatları aldıktan sonra artık gerisi matematik hesabı.
Canvas nesnesini help dosyalarından incelersen brush adında bir özelliiği olduğunu göreceksin. Brush.Color ile seçtiğin alanı istediğin renk ile boyarsın. Canvas ile ilgili gerek bu forumda gerekse bir çok sitede Türkçe bilgi bulabilirsin. Canvas'ı kullanarak daha fazlasını da yapabilirsin.
vesselam
Canvas nesnesini help dosyalarından incelersen brush adında bir özelliiği olduğunu göreceksin. Brush.Color ile seçtiğin alanı istediğin renk ile boyarsın. Canvas ile ilgili gerek bu forumda gerekse bir çok sitede Türkçe bilgi bulabilirsin. Canvas'ı kullanarak daha fazlasını da yapabilirsin.
vesselam
üstad çok sağol yönlendirmen için dediğin gibi yapıyorum araştırdım bana lazım olan polyline değil polygonmuş istediğim pen değil burshmuş renk atayıp istediğimi yapıyorum
yine her tıklamaya nokta koyup iki nokta arasını lineto ile çizip bu arada herbirini değişkene atıp başlangış noktasına geldiğindede polygonu çizip boyuyorum biraz deneme yanılma yöntemi gibi oluyor uzun sürüyor ama oluyor bir tek bu polygonu başka noktaya taşımak ve işaretleyip silebilmek kaldı onuda bulubileceğime inanıyorum yine bilmediğim bu kordinatlarla alanı hangi matematik formülüyle bulmak nasıl bir hesaplama mantığıyla hesaplamak çünkü fikrim bile yok bunada burası matematik formu değil matematik formunda araştır dersen onada eyvallah ama sizin fonksiyon çağırma ve assembler yönlendirmen için çok sağol özellikle bu kodu yollayan ibrahim beye çok çok teşekkürler tüm ufkumu verdiği örnekle genişletti bakış açım yapabileceğim şeyleri daha büyük geniş düşünmemi sağladı başta hayaldi şu anda gerçekti ibrahim bey yine böyle komutlarınız hatta bunla ilgili bir geniş makale yazabilirseniz yada elinizde kaynak varsa paylaşırsanız çok minnettar kalırım çok sağolun saygılarımla
yine her tıklamaya nokta koyup iki nokta arasını lineto ile çizip bu arada herbirini değişkene atıp başlangış noktasına geldiğindede polygonu çizip boyuyorum biraz deneme yanılma yöntemi gibi oluyor uzun sürüyor ama oluyor bir tek bu polygonu başka noktaya taşımak ve işaretleyip silebilmek kaldı onuda bulubileceğime inanıyorum yine bilmediğim bu kordinatlarla alanı hangi matematik formülüyle bulmak nasıl bir hesaplama mantığıyla hesaplamak çünkü fikrim bile yok bunada burası matematik formu değil matematik formunda araştır dersen onada eyvallah ama sizin fonksiyon çağırma ve assembler yönlendirmen için çok sağol özellikle bu kodu yollayan ibrahim beye çok çok teşekkürler tüm ufkumu verdiği örnekle genişletti bakış açım yapabileceğim şeyleri daha büyük geniş düşünmemi sağladı başta hayaldi şu anda gerçekti ibrahim bey yine böyle komutlarınız hatta bunla ilgili bir geniş makale yazabilirseniz yada elinizde kaynak varsa paylaşırsanız çok minnettar kalırım çok sağolun saygılarımla
-
- Üye
- Mesajlar: 163
- Kayıt: 11 Eki 2005 10:44
- İletişim:
Merhabalar
Ben senin sadece sabit bir harita üzerinde illere tıklayarak birşeyler yapmak istediğini zannetmiştim. Eğer öyleyse tüm illerin çizimlerini sitatic bir arraya aktar ve bunları tek tek çiz. sonrada tümümü Tlist gibi bir sınıfa object olarak ekle sonra mouse yürürken bunları hangisi olduğunu test et ve gerekli çizimini yap.
CreatePolygonRgn ve PtInRegion komutu Windows Api dir ve bayağı hızlıdır.
Ama FastGeo http://www.partow.net/projects/fastgeo/index.html
burdada alan hesaplama ve doldurma gibi fonksiyonlar mevcut.
Burdada http://www.efg2.com/Lab/Graphics/PolygonArea.htm
alan hesaplaması ve orta nokta bulunması var.
Ayrıca editor olarakta http://www.delphiarea.com/products/simplegraph/
bu kodları inceleyebilirsin.
Makele yazma işine gelince sanırım bu konu bir makaleden ziyade bir kitap gerektirir. Eğer ingilizce biliyorsan The Tomes of Delphi 3: Win32 Graphical Api kitabını okumanı tavsiye ederim.
Kolay gelsin..
Ben senin sadece sabit bir harita üzerinde illere tıklayarak birşeyler yapmak istediğini zannetmiştim. Eğer öyleyse tüm illerin çizimlerini sitatic bir arraya aktar ve bunları tek tek çiz. sonrada tümümü Tlist gibi bir sınıfa object olarak ekle sonra mouse yürürken bunları hangisi olduğunu test et ve gerekli çizimini yap.
CreatePolygonRgn ve PtInRegion komutu Windows Api dir ve bayağı hızlıdır.
Ama FastGeo http://www.partow.net/projects/fastgeo/index.html
burdada alan hesaplama ve doldurma gibi fonksiyonlar mevcut.
Burdada http://www.efg2.com/Lab/Graphics/PolygonArea.htm
alan hesaplaması ve orta nokta bulunması var.
Ayrıca editor olarakta http://www.delphiarea.com/products/simplegraph/
bu kodları inceleyebilirsin.
Makele yazma işine gelince sanırım bu konu bir makaleden ziyade bir kitap gerektirir. Eğer ingilizce biliyorsan The Tomes of Delphi 3: Win32 Graphical Api kitabını okumanı tavsiye ederim.
Kolay gelsin..