![]() |
problem mit GetDC bzw. AColor
hallo,
kleines problem. wenn ich den befehl GetPixel nur einmal ausführe hier, wird die farbe auf dem screen richtig erkannt, asuche ich allerdings auch noch nach der ZWEITEN koordinate, wird selbst die erste nicht richtig erkannt (sprich das panel färbt sich nicht blau). muss ich jedes mal bevor ich ne neue koordinate absuche den DC neu holen? oder liegt das problem bei AColor und ich muss die erst releasen bevor ich die zweite koordinate suche oO ?
Code:
procedure TForm1.Button2Click(Sender: TObject);
var dc:hdc; AColor : Array[1..4] of Byte; hwnd:hwnd; ... begin ... DC := GetDC(hwnd); //blau DWord(AColor) := GetPixel(dc,410,412); if (AColor[1] > 0) and (AColor[1] < 15)and (AColor[2] > 35) and (AColor[2] < 60) and (AColor[3] > 240) then begin panel1.color :=clblue; end; DWord(AColor) := GetPixel(dc,460,412); if (AColor[1] > 0) and (AColor[1] < 15)and (AColor[2] > 35) and (AColor[2] < 60) and (AColor[3] > 240) then begin panel2.color :=clblue; end; danke |
AW: problem mit GetDC bzw. AColor
Der DC wird durch GetPixel nicht ungültig...hast Du mal den Rückgabewert auf CLR_INVALID überprüft $FFFFFFFF, gegf. passen die Koordinaten nicht.
|
AW: problem mit GetDC bzw. AColor
die koordinaten passen. wenn ich
Code:
alleine laufen lasse funktioniert es, und wenn ich stattdessen (andere koordinaten)
DC := GetDC(game_hwnd);
//blau begin DWord(AColor) := GetPixel(dc,460,412); if (AColor[1] > 0) and (AColor[1] < 70)and (AColor[2] > 15) and (AColor[2] < 60) and (AColor[3] > 240) then panel1.color :=clblue; end;
Code:
laufen lasse funktioniert es auch, nur wenn die pixelabfrage wie im ersten post NACHeinander läuft kommt murks raus - es tut sich nämlich gar nichts, bzw. die panels werden nicht blau gefärbt auch wenn die koordinaten diese farbe haben
DC := GetDC(game_hwnd);
//blau begin DWord(AColor) := GetPixel(dc,410,412); if (AColor[1] > 0) and (AColor[1] < 70)and (AColor[2] > 15) and (AColor[2] < 60) and (AColor[3] > 240) then panel1.color :=clblue; end; |
AW: problem mit GetDC bzw. AColor
WAS kommt den raus?
Lass doch einfach anzeigen. Wenn es gleiche Werte sind oder die Werte sich nicht verändert haben kannst du ja auf ein Fehler schließen! Übrigens, das Handle hat den Namen "~game~" - kann es nicht sein, dass sich die Farbe an diesem Punkt im Spielfenster verändert? |
AW: problem mit GetDC bzw. AColor
Ist das angesprochene Fenster auch sichtbar und die abgefragte Position nicht verdeckt oder außerhalb des auf dem Monitor dargestellten Bereichs?
Stellt sich noch die Frage, ob das wirklich das richtige Fensterhandle ist. Buttons haben eventuell ein eigenes Handel. |
AW: problem mit GetDC bzw. AColor
hmm...
ne da ist nichts verdeckt, ich hab das selbe gerade nochmal mit nem großen bild probiert was einfach in 2 verschiedene farben in der mitte geteilt ist.. würdet ihr auf dem selben weg 2 pixelkoordinaten suchen nacheinander? ich vermute eher das ich einfach einen kleinen fehler im code habe..und AColor wird auch "reseted" bei der zweiten getpixel abfrage? vielleicht hab ich den code einfach doof geschrieben bzw muss da nur was umstellen? :oops: |
AW: problem mit GetDC bzw. AColor
natürlich lag das problem bei mir, code war ok.
danke trotzdem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz