Entwickler-Ecke
Multimedia / Grafik - Farbe erkennen
MaximusMR - Fr 06.09.02 11:40
Titel: Farbe erkennen
Wenn ich auf ein Bild klicke möchte ich das Delphi die Farbe erkennt.
Mein Problem ist einfach das eine Variable hochgezählt werden soll, wenn man auf einen Kreis klickt. Allerdings kann man in meinem derzeitigen Programm auch in die ecken klicken wo der Kreis schon ende ist. das soll abgefangen werden.
Mit der Farberkennung wäre das einfach. Da der Kreis Rot und der hintergrund weiß ist.
Also wie geht das???
Visum - Fr 06.09.02 14:18
Hi,
wie malst du den Kreis?
Wenn du ein TImage benutzt und eine BMP darin hast, müsste es so gehen:
Im OnMousedown-Ereignis:
Quelltext
1: 2:
| if Deinbild.Canvas.Pixels[x,y]<>clwhite then variable:=variable+1; |
Bei einem TImage mit JPG geht es so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var bmp:tbitmap; ... bmp:=tbitmap.Create; bmp.Width:=image1.Width; bmp.Height:=image1.Height; bmp.Assign(image1.Picture.Graphic); if bmp.Canvas.Pixels[x,y]<>clwhite then variable:=variable+1; |
mfG,
visum
MaximusMR - Fr 06.09.02 15:05
Hast du das da mt BMP und jpg verwechselt. Naja mit dem kurzen gehts nich ganz. ich teste mal das andere.
Also bei mir ist ein BMP-Bild.
MaximusMR - Fr 06.09.02 15:11
Das Bild selber heißt "Kreis"
Im moment pasiert nichts wenn ich auf das Bild klicke. hier is der QT:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.KreisClick(Sender: TObject); var bmp:tbitmap; x,y:integer; begin bmp:=tbitmap.Create; bmp.Width:=image1.Width; bmp.Height:=image1.Height; bmp.Assign(image1.Picture.Graphic); if bmp.Canvas.Pixels[x,y]<>clwhite then begin exit; end else x:=x+1;
label1.caption:=inttostr(x); end; |
Code-Tags hinzugefügt. TINO
Visum - Fr 06.09.02 22:49
Bei OnClick geht das nicht, das muss im OnMouseDown Ereignis behandelt werden. Da werden die Koordinaten der Maus als x und y direkt mitgegeben.
Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.SGEinkaufslisteMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Kreis.Canvas.Pixels[x,y]<>clwhite then x:=x+1; label1.caption:=inttostr(x); end; |
OnMouseDown findest du im Objectinspector unter Ereignisse.
MaximusMR - Sa 07.09.02 09:49
Wo ich das finde weiß ich ja. Aber ich wusste nicht das da x und y immer ermittelt werden.
Werde ich direkt mal testen.
MaximusMR - Sa 07.09.02 10:11
Klappt wunderbar!!!! danke
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!