![]() |
Pixel auf Form ermitteln
Hallo
ich möchte herraus finden welche Farbe ein Pixel auf meinem Form hat. Dies geht ja bekanntlich mit
Delphi-Quellcode:
das probleme ist nun leider das wenn an der stelle z.b. ein Button liegt, er sagt das das ausserhalbe deine bereichs liegt (er gibt -1 zurück) was ja auch verständlich ist, weil das Pixel befindet sich ja auf der Canvas des buttons. Nun habe ich die Forum suche bemüht und diesen COde hier gefunden:
Form1.Canvas.Pixels[x,y]
Delphi-Quellcode:
Das Probleme ich bekomm die Pixelangaben in relation meines Formulars und nicht des gesamten Bildschirmes. also habe ich es dann so versucht
function getColor(x, y: LongInt): TColor;
var canvas: TCanvas; begin canvas:=TCanvas.Create; try canvas.Handle:=GetWindowDC(GetDesktopWindow); Result:=canvas.pixels[X , Y finally canvas.Free; end; end;
Delphi-Quellcode:
Aber meine "Test" lieferten eine Falsche Farbe, hat einer eine bessere Idee oder weiss was ich falsch mache?
function TForm1.getColor(x, y: LongInt): TColor;
var canvas: TCanvas; begin canvas:=TCanvas.Create; try canvas.Handle:=GetWindowDC(GetDesktopWindow); Result:=canvas.pixels[X + Form1.left , Y + Form1.Top]; finally canvas.Free; end; end; Danke euch schonmal :D |
Re: Pixel auf Form ermitteln
Folgende Schritte würde ich wagen:
1. An der besagten Stelle einen Punkt zeichnen, damit man weis, wo man ist 2. Könnte noch borderwidth, die Titlebar oder sonstiges ein Problem beim abstand darstellen 3. Fängt der Bildschirm bei 0 an, oder :gruebel: |
Re: Pixel auf Form ermitteln
Delphi-Quellcode:
function TForm1.getColor(x, y: LongInt): TColor;
var canvas: TCanvas; p : TPoint; begin // vom Koordinatensystem des Formulars ins System des Screens umsteigen p := Self.ClientToScreen(Point(x,y)); canvas:=TCanvas.Create; try canvas.Handle:=GetWindowDC(GetDesktopWindow); Result:=canvas.Pixels[p.x, p.y]; finally canvas.Free; end; end; |
Re: Pixel auf Form ermitteln
super danke dir der Code geht :D
|
Re: Pixel auf Form ermitteln
Hallo,
Canvas wird für die Farbermittlung aber nicht wirklich gebraucht:
Delphi-Quellcode:
Freundliche Grüße
function GetColor(ptScreen: TPoint): TColor;
begin with ptScreen do Result := GetPixel(GetWindowDC(GetDesktopWindow), X, Y); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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