Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Abfrage von Pixelfragen
TobyNMS8 - Fr 10.03.06 09:49
Titel: Abfrage von Pixelfragen
Moin Moin,
ich hab da ein Problem mit der Delphi-Abfrage der Pixel. Ich habe den Befehl:
benutzt. Allerdings, wenn man dann
InttoStr eingiebt, kommt egal bei welcher Farbe (durch Shapes geregelt) der selbe Wert
16776960.
Da ich aber mit diesem Wert ein Objekt steuern will und dieses durch ein Hindernis in anderer Farbe gestoppt werden soll, wird das natürlich, da ja der Wert immer gleich ist, nicht Funktionieren.
Frage: Wie bekommt man den Wert richtig hin oder gibt es alternativen?
Ich danke schon jetzt für die Antworten
Gausi - Fr 10.03.06 09:58
Hallo und :welcome: in der Entwickler-Ecke!
Zeig doch mal bitte etwas mehr Code, was du da machst. Entweder machst du mit x und y was verkehrt, oder übergibst den erhaltenen Farbwert nicht richtig an IntToStr.
btw: Anstelle der [color=blue]...[/color]-Tags gibt es hier die [delphi]..[/delphi]-Tags (unter Bereiche), um Quellcode als solchen darzustellen.
TobyNMS8 - Fr 10.03.06 10:07
Also ich gebe mal den kompletten Befehl an den ich so original in Delphi geschrieben habe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.ZeitmesserTimer(Sender: TObject); var VorAuto: Integer; begin VorAuto := Canvas.Pixels[Auto.Left + 1, 143]; if ((Auto.Left < 390) and (VorAuto=16776960)) then begin Auto.Left := Auto.Left + 1; Edit1.Text:='Vorgang läuft: '+ InttoStr(VorAuto); end else if Auto.Left = 390 then begin Zeitmesser.Enabled := False; Auto.Left := 1; Edit1.Text:='Vorgang beendet'; StartBtn.Caption := '&Start'; end end; |
Vielleicht hilft das weiter bei der Fehlersuche. Ich weiß nicht weiter...
MightyPit - Fr 10.03.06 10:43
Hmm laut Delphi-Hilfe gibt Canvas.Pixel ein TColor zurück wenn du den zurückgegebenen Wert in ein Integer schreibst und dabei so eine Zahl rauskommt, und immer die gleiche, könnt ich mir vorstellen das es der Zeiger ist den du so bekommst. Änder den Typ von VorAuto in TColor und vergleich gegen den Hexwert der Farbe in der Form $AABBGGRR wobei AA = Alphakanal, BB = Blau, GG = Grün und RR = Rotanteil in Hexadezimal ist
Grüßle,
Pit
Jailbird - Fr 10.03.06 10:48
Sofern dich Alpha-Werte nicht stören, kannst du folgendes benutzen
Delphi-Quelltext
1:
| VorAuto := ColorToRGB(Canvas.Pixels[Auto.Left + 1, 143]); |
Edith meint, dass es bei Jailbird auch ohne ColorToRGB problemlos funktioniert
GTA-Place - Sa 11.03.06 16:32
Dir ist bewusst, dass du mit Canvas.Pixels[X, Y]; die Farbe der Form an Stelle X, Y bekommst und nicht die Farbe vom Shape, welches darüber liegt?
TobyNMS8 - Fr 17.03.06 09:30
Ahh... das wird's sein. Danke. Jetzt stekllt sich aber für mich eine weitere Frage: Kann man die Farbe der Shapes abfragen? Und wenn nicht: Wie kann ich die Farbe des 'Canvas' ändern?
Danke jetzt schon für die Antwort!
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!