AGB  ·  Datenschutz  ·  Impressum  







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

DirectX GetPixel

Ein Thema von napsterxx · begonnen am 25. Mai 2008 · letzter Beitrag vom 29. Mai 2008
Antwort Antwort
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#1

DirectX GetPixel

  Alt 25. Mai 2008, 21:10
Delphi-Quellcode:
var
  X, Y: Integer;
begin
  X := Mouse.CursorPos.X;
  Y := Mouse.CursorPos.Y;
  Label1.Caption := 'X: ' + IntToStr(X) + ' Y: ' + IntToStr(Y);

  DC := GetDC( 200002 );
  Label1.Font.Color := (GetPixel(DC, X, Y));
end;
Das ist mein schöner code
Also das Handle stimmt, ich habe es mit WinSpy ausgelesen. Ich dachte ich bekomme so die Farbe unter der Maus die im SPiel gerade ist...

Die Farbe die ich erhalte ist immer schwarz.
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: DirectX GetPixel

  Alt 26. Mai 2008, 17:25
Das gute alte Thema. DirectX zeichnet via Overlay, und somit an Windows vorbei. Aus sicht der GDI ist dort auch nur ein schwarzer Pixel. Um an Bilder aus Overlays zu kommen, müsstest du entweder entsprechende Aufrufe an die jeweiligen DLLs hooken, oder gleich die gesamte DLL ersetzen. Das ist in etwa das selbe, wie die Frage danach, wie man selbst etwas auf ein DirectX Spiel zeichnen kann. Dazu gibt es einige Themen in der DP.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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
 
#3

Re: DirectX GetPixel

  Alt 26. Mai 2008, 17:33
Zitat von napsterxx:
Delphi-Quellcode:
var
  X, Y: Integer;
begin
   // ...
  DC := GetDC( 200002 ); // <---- !!
  // ...
end;
Das ist mein schöner code
Also das Handle stimmt, ich habe es mit WinSpy ausgelesen. Ich dachte ich bekomme so die Farbe unter der Maus die im SPiel gerade ist...

Die Farbe die ich erhalte ist immer schwarz.
Hi,

Du kannst GetDC keinen konstanten Wert übergeben. GetDC erwartet das Handle eines Fensters und das ändert sich normalerweise bei jedem Start des Programms. Das bedeutet du musst erst das Handle des Fensters herausfinden. Dabei ist Delphi-Referenz durchsuchenFindWindow ganz nützlich

Allerdings muss ich Medium Recht geben: GetPixel und DirectX funktioniert nicht. Da wird die Sache schon um ein vielfaches (!) schwieriger...

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DirectX GetPixel

  Alt 29. Mai 2008, 17:26
Dieser "konstante" Wert war das Handle

Ich habe mit DirectX angefangen, auch ein cooles buch, hoffe ich bekomme es hin, wenn ichs vll geschafft habe poste ich die Lösung
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  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
 
#5

Re: DirectX GetPixel

  Alt 29. Mai 2008, 17:33
Zitat von napsterxx:
Dieser "konstante" Wert war das Handle
Das ist mir schon klar, aber das Handle eines Fensters ändert sich bei jedem Start des Programms, bzw jedesmal wenn es erstellt wird. Von da aus kannst du nicht davon ausgehen, dass das Fenster, auf das du zeichnen willst das Handle 200002 hat.

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: DirectX GetPixel

  Alt 29. Mai 2008, 19:45
Jo, ist mir auch klar, hätte es schon geändert ^^
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  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 14:30 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