AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetPixel gibt fehlerhaften Wert zurück

Ein Thema von xZise · begonnen am 8. Aug 2006 · letzter Beitrag vom 2. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

GetPixel gibt fehlerhaften Wert zurück

  Alt 8. Aug 2006, 22:44
Ich habe folgenden Code:
Delphi-Quellcode:
procedure TfrmEId3.FormShow(Sender: TObject);
var
  hDesk : HWND;
  hdcDesktop : HDC;
  i : Byte;
begin
  hDesk := GetDesktopWindow;
  hdcDesktop := GetWindowDC(hDesk);

  for i := 0 to xiBg.ControlCount - 1 do begin
    if xiBg.Controls[i] is TEdit then begin
      (xiBg.Controls[i] as TEdit).Color := GetPixel(hdcDesktop, 71, xiBg.Controls[i].Top);
    end;
  end;
end;
Der bei Show ausgeführt wird. Diese TEdits haben folgende Position:
Top = 32 + (Edit - 1) * 16
Left = 72

Das sind 7 Edits die alle untereinander angeordnet sind.
Alle sind auf einem "xiPanel", welches eine Farbverlauf hat und mit diesem Code wollte ich den Pixelfarbwert von Edit.Top und Edit.Left - 1 (immer 71) nehmen... Nun funktioniert das auch schon einigermaßen ( )... Siehe Anhang... Ich kann mit das eigentlich nicht erklären... (Das 1. Edit kann man nicht erkennen )
Angehängte Dateien
Dateityp: zip farbmurks_195.zip (4,3 KB, 29x aufgerufen)
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Farben spielen verrückt

  Alt 9. Aug 2006, 07:50
Ich habe gerade kein Delphi offen, sodass ich mir die Funktion GetPixel anschauen kann, aber kann es vllt. sein dass du den übergebenen Wert (Koordinaten) erst mit ClientToScreen umrechnen lassen musst?
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Farben spielen verrückt

  Alt 9. Aug 2006, 09:40
Nein das ist es leider nicht!
Ich habe Top/Left der Form auf 0 gesetzt (fsNone) und es geht immernochnicht Schade...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#4

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 9. Aug 2006, 12:26
Naja, auch wenn du es auf 0,0 setzt, ist es ja nun keine richtige Lösung. Wenn GetPixel die Koordinaten des Bildschirms meint, dann MUSST du die Umrechnungs-Funktion verwenden
Sascha
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 23. Aug 2006, 08:42
Zitat von Sascha L:
Wenn GetPixel die Koordinaten des Bildschirms meint, dann MUSST du die Umrechnungs-Funktion verwenden
Nicht immer!

Wenn Point(0, 0) die Koos des Fensters ist, dann muss ich es nicht umrechnen.

Was mir aufgefallen ist: Die Farbe, ist die Farbe der Fenster dadrunter. (Also sozusagen, das was man ohne den Fenster sehen würde)

Vielleicht liegts daran, dass das Fenster nicht die Mainform ist?

PS: Scheiß T-Online... Weil ich umgezogen bin habe ich 2 Wochen kein I-Net Total Müll, wenn man Programmiert...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#6

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 25. Aug 2006, 13:14
Hat keiner eine Idee?
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 25. Aug 2006, 14:34
Haste schonmal versucht ein Pixel zu zeichnen?

Also statt Auszulesen einen setzen und nachsehn wo das landet.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 25. Aug 2006, 14:40
Vielleicht hilft das ja:

Delphi-Quellcode:
function TCanvas.GetPixel(X, Y: Integer): TColor;
begin
  RequiredState([csHandleValid]);
  GetPixel := Windows.GetPixel(FHandle, X, Y);
end;
So bekommt TCanvas seine Pixel

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 25. Aug 2006, 14:52
So hat er es ja schon (GetPixel).

Das RequiredState([csHandleValid]); sorgt nur dafür, daß ein entsprechendes Handle zur Verfügung steht ... anwenden kann und braucht er sowas aber nicht (beim Desktop).


hmmm, im Moment machst du es ja so:
GetPixel(GetWindowDC(GetDesktopWindow), ...); versuch es mal so:
(ich hoffe ich irre mich grad nicht, aber gab GetDC(0) nicht das DesktopHandle zurück?)
GetPixel(GetDC(0), ...);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: GetPixel gibt fehlerhaften Wert zurück

  Alt 25. Aug 2006, 15:05
Also bei mir funktioniert

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  hDesk : HWND;
  hdcDesktop : HDC;
begin
  hDesk := GetDesktopWindow;
  hdcDesktop := GetWindowDC(hDesk);
  Form1.Color := GetPixel(hdcDesktop, 81, 961);
end;
wunderbar.
Nur ich glaube es liegt wirklich daran das wenn Controls[i].Top = 0... Dann kann die y Koordinate die du suchst 500 sein. Du musst es wirklich umrechnen.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:25 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