AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi pixelfarbe außerhalb von form
Thema durchsuchen
Ansicht
Themen-Optionen

pixelfarbe außerhalb von form

Ein Thema von any_key · begonnen am 8. Jul 2006 · letzter Beitrag vom 8. Jul 2006
Antwort Antwort
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#1

pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 12:53
aloah
ich würde gerne mithilfe eines programms den rgb farbwert eines bestimmten pixels auslesen
allerdings soll sich dieser pixel nicht innerhalb des programmes selbst befinden
ich hab schon ne bisschen rumgegoogelt und hab dabei nur ne möglichkeit gefunden eine farbe vom desktop auszulesen - allerdings soll sich der auszulesende pixel in einem anderen programm befinden
wäre echt doll wenn mir wer dabei helfen könnte...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 12:56
Da das desktop auch ein fenster ist, müßte es mit einem anderen fenster genausogehen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 12:56
das Pixel vom Desktop ermitteln beinhaltet die Programme welche gerade an der Stelle liegen. Man bekommt also streng genommen nicht das pixel vom Desktop sondern das was auf dem Bildschirm an der Stelle ist (mal DirectX etc. ausgenommen).
Wenn du jedoch wirklich das aus einem anderen Programm haben willst dann wäre interessant wie du das Fenster des anderen Programmes ermittelst. Wenn du das Fenster-Handle des anderen Programmes hast kannst du mit dem entsprechenden Befehl das Fenster auf eine eigene Canvas printen lassen und dann von der Canvas das Pixel auslesen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
any_key

Registriert seit: 7. Okt 2005
96 Beiträge
 
Delphi 7 Personal
 
#4

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 13:07
hey das scheint so zu gehen... (hätte ichs ma vorher ausprobiert)

hab doch noch mal ne frage
also ich hab jetzt folgendes
Code:
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;
kann ich den farbwert irgendwie speichern so das das panel beim start des programmes wieder genau die farbe hat die ich vorher eingelesen habe?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 14:24
Ja sicher kannst du einen Farbwert speichern und wieder einlesen. Zum Speichern hast du verschiedene Möglichkeiten: TMemIniFile, TRegistry, ...

Wieder einlesen kannst du den Wert dann im Ereignis OnCreate() deiner Form. Zum Wegschreiben schaue dir mal die Funktion ColorToString() an.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 14:34
Zitat von marabu:
Wieder einlesen kannst du den Wert dann im Ereignis OnCreate() deiner Form. Zum Wegschreiben schaue dir mal die Funktion ColorToString() an.
Oder einfach als Integer speichern, z.B. in einer INI-Datei:
Delphi-Quellcode:
var Ini: TIniFile;

  //Einlesen, OnCreate:
  Panel1.Color := Ini.ReadInteger('Panel1', 'Color', clBtnFace);

  //Schreiben, OnClose:
  Ini.WriteInteger('Panel1', 'Color', Panel1.Color);
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 14:52
Hallo Martin,

wenn man den Farbwert als String wegschreibt, kann man ihn auch ohne Taschenrechner interpretieren, wenn man mal in die Datei reinschaut. Aus ähnlichen Gründen hat XML seinen Siegeszug rund um die Welt angetreten.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 15:05
Zitat von marabu:
Hallo Martin,

wenn man den Farbwert als String wegschreibt, kann man ihn auch ohne Taschenrechner interpretieren, wenn man mal in die Datei reinschaut. Aus ähnlichen Gründen hat XML seinen Siegeszug rund um die Welt angetreten.

marabu
Ja natürlich, es geht auch so:
Delphi-Quellcode:
var Ini: TIniFile;

  //Einlesen, OnCreate:
  Panel1.Color := StringToColor(Ini.ReadString('Panel1', 'Color', 'clBtnFace'));

  //Schreiben, OnClose:
  Ini.WriteString('Panel1', 'Color', ColorToString(Panel1.Color));
Man spart sich sonst eben ein paar Umwandlungen und ein wenig Schreibarbeit beim proggen.
Wenn's aber um die bessere Lesbarkeit und Übersicht in der INI geht, dann sollte man es so machen.

[OT]
Ich finde, man sollte in INI's generell nichts von Hand rumpfuschen und deshalb muss hier auch nichts übersichtlich drin stehen.
Deshalb bevorzuge ich die Integer-Variante - meine Meinung
[/OT]
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: pixelfarbe außerhalb von form

  Alt 8. Jul 2006, 17:12
Martin, dass kannst du in deinem zarten Alter nicht wissen, aber INI-Dateien sind damals speziell als frühe Form der Mensch-Maschine-Schnittstelle erfunden worden. Eher ist das Beschreiben einer INI-Datei durch ein Programm als Sündenfall anzusehen.

Freundliche Grüße

marabu
  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 06:17 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