Merhaba Arkadaşlar
Bir form içine
Form1.Canvas.Polygon([Point(50,50),Point(50,150),Point(150,150),Point(150,50)]);
şekilde dikdörtgen çizdirdim.bunun içinede birtane daha çizdim
Form1.Canvas.Polygon([Point(55,55),Point(55,145),Point(145,145),Point(145,55)]);
bu çizimler i seçip mause sağ tuşu ile rengini değiştir demek isitorum
Shape panel vs ile kolay fakat cizilenler rasgele olacak yani didörtgen olayacak sürekli o yüzden polygon ile yapmam gerekli.
Yada bunun için bir component felan varmı biliğiniz.
Amamcım ölçüleri girilen şeklin çizimini yapmak .çizimler basit olacak mesela bir masa bir düz üst 2 bacak şeklinde ama rengi istediği gibi değiştirilebilir olacak
Bu nu nasıl yapabilirim
Canvas Poligon Seçme renk değiştirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Canvas Poligon Seçme renk değiştirme
Şekiller çizilmeden önce renklerine karar verme şansınız varsa en kolay çözüm bu olur sizin için. Örnek:
Çizimler yapıldıktan renkleri değiştirmek zorundaysanız formun OnMouseDown olayını değerlendirebilirsiniz. Buradan alacağınız X,Y koordinatlarının sizin çizdiğiniz Polygon'ların içinde olup olmadığı kontrol edilmeli(PtInRegion), ona göre ilgili poligon yeniden boyanmalı...
Kod: Tümünü seç
Form1.Canvas.Brush.Color := clYellow;
Form1.Canvas.Polygon([Point(50,50),Point(50,150),Point(150,150),Point(150,50)]);
Form1.Canvas.Brush.Color := clRed;
Form1.Canvas.Polygon([Point(55,55),Point(55,145),Point(145,145),Point(145,55)]);
There's no place like 127.0.0.1
Re: Canvas Poligon Seçme renk değiştirme
Teşekkürler cevap için bulunduğum nokta da iç içe poligonlar var kesişiyorlar birbirleriyle o zaman karışmazmı
Re: Canvas Poligon Seçme renk değiştirme
Sağ click'le boyama yapılacaksa en üstteki poligon boyanacak demektir. Dolayısıyla sizin daha önce çizdiğiniz poligonları bir listede tutmanız gerekir. Bu listeye en son eklenen poligon en üsttedir mantığıyla, seçilen bir noktanın hangi poligon içinde olduğunu anlamak için poligon listesine en son eklenenden, ilk eklenene doğru tarama yapmanız gerekir.
There's no place like 127.0.0.1