Autor Beitrag
TobyNMS8
Hält's aus hier
Beiträge: 8

Win XP Home SP2
Delphi 2005
BeitragVerfasst: Fr 10.03.06 09:49 
Moin Moin,

ich hab da ein Problem mit der Delphi-Abfrage der Pixel. Ich habe den Befehl:

ausblenden Delphi-Quelltext
1:
 Canvas.Pixels[x,y]					


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


Zuletzt bearbeitet von TobyNMS8 am Fr 10.03.06 10:22, insgesamt 1-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: 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.

_________________
We are, we were and will not be.
TobyNMS8 Threadstarter
Hält's aus hier
Beiträge: 8

Win XP Home SP2
Delphi 2005
BeitragVerfasst: Fr 10.03.06 10:07 
Also ich gebe mal den kompletten Befehl an den ich so original in Delphi geschrieben habe:

ausblenden 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 + 1143];
if ((Auto.Left < 390and (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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 22

Win XP
Delphi 2005 pro, Delphi 7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 127

Windows XP Pro SP2
Delphi 7 Professional
BeitragVerfasst: Fr 10.03.06 10:48 
Sofern dich Alpha-Werte nicht stören, kannst du folgendes benutzen

ausblenden Delphi-Quelltext
1:
VorAuto := ColorToRGB(Canvas.Pixels[Auto.Left + 1143]);					



Edith meint, dass es bei Jailbird auch ohne ColorToRGB problemlos funktioniert
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: 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?

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
TobyNMS8 Threadstarter
Hält's aus hier
Beiträge: 8

Win XP Home SP2
Delphi 2005
BeitragVerfasst: 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!