![]() |
rgb farbinformationen vom desktop bekommen
hallo,
ich habe ein programm programmiert, was von dem desktop einen screenshot macht und dann per
Delphi-Quellcode:
die farbe bestimmen.
color := bitmap.Canvas.Pixels[x,y];
dann bestimme ich mit dieser (aus der delphipraxis geklauten) function die rgb werte:
Delphi-Quellcode:
nun habe ich meine r g b - werte, das problem von meinem programm ist, dass es irgendwie abschmiert (ich denke es liegt an dem screenshot machen). egal, interessiert mich nciht mehr, ich habe jetzt den farbwert eines pixels auf dem desktop mit dieser (auch geklauten) funktion bekommen.
TColor2RGB(color,r,g,b);
procedure TColor2RGB(const Color: TColor; var R, G, B: Byte); begin // convert hexa-decimal values to RGB R := Color and $FF; G := (Color shr 8) and $FF; B := (Color shr 16) and $FF; end;
Delphi-Quellcode:
das problem dabei ist, dass ich einen blau-ton habe und wenn ich die von getpixel zurückgelieferte farbe aufspalten in die 3 rgb-werte kommt sowas raus wie: R=0; G=0; B=234;function GetPixel(Pos: TPoint): TColor; var DC: HDC; Handle: HWND; begin Handle:=WindowFromPoint(Pos); DC:=GetDC(Handle); result:=Windows.GetPixel(DC, Pos.X, Pos.Y); ReleaseDC(Handle, DC); end; das kann aber nicht sein, weil psp8 mir z.b. über diesen pixel aussagt, das er R=29; G=144; B=189 hat. ich kapier das nicht :| könnt ihr mir bitte helfen? vielen dank! korn117 |
Re: rgb farbinformationen vom desktop bekommen
sorry, nochmal eine kleine erklärung:
mein programm soll folgendes machen: von einem pixel, den der user sieht die drei einzelnen farbwerte auslesen. das war's eigentlich :-D am besten OHNE screenshot! hab schon wirklich das dp-forum durchsucht!(sieht man ja an den funktionen) |
Re: rgb farbinformationen vom desktop bekommen
Über GetDC(0) bekommst Du Zugriff auf den gesamten Bildschirm und brauchst nicht extra das Fenster an der Stelle ermitteln.
Zudem haben dann die Koordinaten von Pixel und Desktop den gleichen Bezug. GetPixel bezieht sich afaik auf die Koordinaten des DC, und der wäre bei anderen Fenstern ja offsetbehaftet (-> GetDCOrgEx()). Beim Release gibst Du dann das eigene Fensterhandle an. MfG, Tryer |
Re: rgb farbinformationen vom desktop bekommen
hi tryer!
danke für deine antwort ich werde, aber daraus nciht so (komplett) schlau, es wäre nett, wenn du es für mich noch mal etwas anders formulierst :) (den code habe ich ja nicht geschrieben, ich verstehe ihn nicht komplett bis ins letzte detail, was da so vor sich gehen soll :roll: ) vielen dank! |
Re: rgb farbinformationen vom desktop bekommen
ich hab die eine funktion zur bestimmung des der pixelfarbe mir nochmal angeguckt und sie so verändert, dass da nur noch eine zeile sourcecode ist:
Delphi-Quellcode:
nun hab ich eine vermutung: des getpixel ermittelt meiner meinung nach nur den farbton für rot und nicht alle rgb farbwerte . function GetPixel(Pos: TPoint): TColor; var DC: HDC; // Handle: HWND; begin // Handle:=WindowFromPoint(Pos); // DC:=GetDC(Handle); // result:=Windows.GetPixel(DC, Pos.X, Pos.Y); result:=Windows.GetPixel(GetDC(0), Pos.X, Pos.Y); // ReleaseDC(Handle, DC); end; stimmt meine vermutung??? :roll: - und wenn ja könnt ihr mir bitte helfen? danke! |
Re: rgb farbinformationen vom desktop bekommen
Zitat:
Zitat:
Stimmen Deine Koordinaten denn ganz sicher? Gruß, teebee |
Re: rgb farbinformationen vom desktop bekommen
ich bin mir fast 100%ig sicher - leider. aber wenn ich mit der obengenannten funktion die rückgabe von getpixel aufteilen will in r-g-b dann kommt bei meinen test's bei g & b "0" raus :?
danke für deine antwort teebee |
AW: rgb farbinformationen vom desktop bekommen
...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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-2025 by Thomas Breitkreuz