Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi auslesen der farbe eines pixels auf dem monitor (https://www.delphipraxis.net/76820-auslesen-der-farbe-eines-pixels-auf-dem-monitor.html)

BarcB 10. Sep 2006 15:18


auslesen der farbe eines pixels auf dem monitor
 
hi, ist es möglich/wie ist es möglich bei einem bestimmten pixel auf dem display außerhalb der form die farbe auszulesen?

also je nach auflösung bei mir z.b. 1280x1024 pixel
will ich die farbe von pixel (100/150) auslesen, wobei 100 x-wert und 150-y wert ist.

wie bekommt man in delphi dann den farbwert also wie wird er ausgegeben als hexcode?


danke!

3_of_8 10. Sep 2006 15:23

Re: auslesen der farbe eines pixels auf dem monitor
 
Einfach ein Canvas an den Desktop binden.

Delphi-Quellcode:
function GetColorAt(const X, Y: Integer): TColor;
var canvas: TCanvas;
begin
  canvas:=TCanvas.Create;
  try
    canvas.Handle:=GetWindowDC(GetDesktopWindow);
    Result:=canvas.pixels[X, Y];
  finally
    canvas.Free;
  end;
end;
(ungetestet)

Meflin 10. Sep 2006 17:14

Re: auslesen der farbe eines pixels auf dem monitor
 
Das hatten wir schon öfters... Hier im Forum suchenPixelfarbe

Delphi-Quellcode:
function DesktopColor(const X, Y: Integer): TColor;
var
  c: TCanvas;
begin
  c := TCanvas.Create;
  try
    c.Handle := GetWindowDC(GetDesktopWindow);
    Result  := GetPixel(c.Handle, X, Y);
  finally
    c.Free;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Pos: TPoint;
begin
GetCursorPos(Pos);
  Panel1.Color := DesktopColor(Pos.X, Pos.Y);
end;

Muetze1 10. Sep 2006 17:49

Re: auslesen der farbe eines pixels auf dem monitor
 
@Meflin: Bei deinem Code hat die TCanvas Instanz keinen Sinn. Sie wird nur zum freigeben des DC Handles genutzt. Da könnte man aber gleich alles in WinAPI machen und ReleaseDC() selber aufrufen. Bei 3_of_8's Code wird die Pixel's Eigenschaft genutzt des Canvas.

Meflin 10. Sep 2006 17:53

Re: auslesen der farbe eines pixels auf dem monitor
 
Zitat:

Zitat von Muetze1
@Meflin: Bei deinem Code hat die TCanvas Instanz keinen Sinn. Sie wird nur zum freigeben des DC Handles genutzt. Da könnte man aber gleich alles in WinAPI machen und ReleaseDC() selber aufrufen. Bei 3_of_8's Code wird die Pixel's Eigenschaft genutzt des Canvas.

Ist nicht mein Code, sondern der erste (von vielen), den die Suche ausspuckt :mrgreen: Will mich ja hier nicht mit fremden Federn "schmücken"...



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz