AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi rgb farbinformationen vom desktop bekommen
Thema durchsuchen
Ansicht
Themen-Optionen

rgb farbinformationen vom desktop bekommen

Ein Thema von KoRn117 · begonnen am 9. Mai 2004 · letzter Beitrag vom 18. Aug 2015
Antwort Antwort
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#1

rgb farbinformationen vom desktop bekommen

  Alt 9. Mai 2004, 21:09
hallo,



ich habe ein programm programmiert, was von dem desktop einen screenshot macht und dann per color := bitmap.Canvas.Pixels[x,y]; die farbe bestimmen.

dann bestimme ich mit dieser (aus der delphipraxis geklauten) function die rgb werte:

Delphi-Quellcode:
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;
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.
Delphi-Quellcode:

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 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;
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
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: rgb farbinformationen vom desktop bekommen

  Alt 9. Mai 2004, 21:11
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


am besten OHNE screenshot!

hab schon wirklich das dp-forum durchsucht!(sieht man ja an den funktionen)
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#3

Re: rgb farbinformationen vom desktop bekommen

  Alt 9. Mai 2004, 21:42
Ü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
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: rgb farbinformationen vom desktop bekommen

  Alt 9. Mai 2004, 22:02
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 )

vielen dank!
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: rgb farbinformationen vom desktop bekommen

  Alt 9. Mai 2004, 22:12
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:

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;
nun hab ich eine vermutung: des getpixel ermittelt meiner meinung nach nur den farbton für rot und nicht alle rgb farbwerte .

stimmt meine vermutung??? - und wenn ja könnt ihr mir bitte helfen?

danke!
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#6

Re: rgb farbinformationen vom desktop bekommen

  Alt 10. Mai 2004, 14:14
Zitat von KoRn117:
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:

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;
Du solltest das nicht auf eine Zeile zusammenkürzen sondern den Gerätekontext ('DC') auf jeden Fall zwischenspeichern, um ihn hinterher mit ReleaseDC freizugeben.

Zitat von KoRn117:
nun hab ich eine vermutung: des getpixel ermittelt meiner meinung nach nur den farbton für rot und nicht alle rgb farbwerte .

stimmt meine vermutung???
Nein, GetPixel liefert den RGB-Wert des entsprechenden Pixels (s. PSDK).
Stimmen Deine Koordinaten denn ganz sicher?

Gruß, teebee
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: rgb farbinformationen vom desktop bekommen

  Alt 12. Mai 2004, 22:36
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
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.116 Beiträge
 
Delphi 12 Athens
 
#8

AW: rgb farbinformationen vom desktop bekommen

  Alt 18. Aug 2015, 08:34
...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 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