AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Farbe unter dem Mauszeiger erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe unter dem Mauszeiger erkennen

Ein Thema von Neuni · begonnen am 22. Jan 2005 · letzter Beitrag vom 9. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#1

Farbe unter dem Mauszeiger erkennen

  Alt 22. Jan 2005, 20:47
Hi,
gibt es eine möglichkeit auf einem Bild die Farbe (als RGB) die unter dem Mauszeiger ist herauszufinden? Also ich habe in meinem Programm ein Bild und möchte dann die Farbe als RGB auslesen, die gerade unter dem Cursor ist.

Ist das möglich und wenn ja wie?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Farbe unter dem Mauszeiger erkennen

  Alt 22. Jan 2005, 21:23
Moin!

Ich habe mal mein IHK Abschlussprojekt angehängt, der kann sowas mit Bitmaps - einfach mal anschauen, ich hoffe damit kommen dir die nötigen Ideen.

Ansonsten zu dem TColorSelector: er nutzt noch einen alten Revisionsstand, ich habe aber die neueste Version der Komponente beigelegt - es können Fehler beim Compilieren auftreten - sollten aber IMHO nicht.

MfG
Muetze1
Angehängte Dateien
Dateityp: zip bce_308.zip (34,4 KB, 48x aufgerufen)
  Mit Zitat antworten Zitat
Elite
(Gast)

n/a Beiträge
 
#3

Re: Farbe unter dem Mauszeiger erkennen

  Alt 22. Jan 2005, 22:25
Mag sein, dass das gleiche auch in deinem Projekt drinne steht (umso besser), denn ich weiß es nur noch teilweise.
Es gibt tatsächlich ne API, mit der du die Pixelfarbe an einem bestimmten, globalen Punkt bekommst. Mit GetCursorPos holst du dir diesen Punkt und mit GetColor(GetCursorPos) o.Ä. (weiß leider nimmer wie das Teil genau hieß) holst du dir dann die Farbe.
  Mit Zitat antworten Zitat
Benutzerbild von Bitworm
Bitworm

Registriert seit: 28. Jun 2004
Ort: Bockhorn
90 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 00:14
Gibt es denn da keinen Lösungsansatz, der in ähnlicher Art bereits im Bereich Win32-API (da gehört das Ganze IMHO eher hin) diskutiert wurde ?
Rolf Heinen
Bye und bis denne

Bitworm
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 00:14
Zitat:
Windows GDI
GetPixel
The GetPixel function retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates.

COLORREF GetPixel(
HDC hdc, // handle to DC
int nXPos, // x-coordinate of pixel
int nYPos // y-coordinate of pixel
);
Parameters
hdc
[in] Handle to the device context.
nXPos
[in] Specifies the x-coordinate, in logical units, of the pixel to be examined.
nYPos
[in] Specifies the y-coordinate, in logical units, of the pixel to be examined.
Return Values
The return value is the RGB value of the pixel. If the pixel is outside of the current clipping region, the return value is CLR_INVALID.

Remarks
The pixel must be within the boundaries of the current clipping region.

Not all devices support GetPixel. An application should call GetDeviceCaps to determine whether a specified device supports this function.

Requirements
Windows NT/2000/XP: Included in Windows NT 3.1 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Wingdi.h; include Windows.h.
Library: Use Gdi32.lib.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 00:23
Alternativ gibt's auch die einfache Eigenschaft Pixel von TCancas, die als Funtkion dazu genutzt werden kann, als Rückgabe den Farbwert des übergeben Pixels zu liefern. Das sollte das einfachst sein.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 01:11
Hier nochmal eine nette kurze Lösung mittels GetPixel:


Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var DC : HDC;
    AColor : DWord;
begin
  DC:=CreateDC('DISPLAY',NIL,NIL,NIL);
  AColor := GetPixel(DC,Mouse.CursorPos.X,Mouse.CursorPos.Y);
  DeleteDC(DC);
  Label1.Caption := 'R: ' + IntToStr(AColor and $FF) + '; ' +
                    'G: ' + IntToStr(AColor and $FF00 div $100) + '; ' +
                    'B: ' + IntToStr(AColor and $FF0000 div $10000);
end;
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 01:53
Moin!

Div? Warum nicht einfach Shr ?

Ansonsten nochmal was anderes: Oben wurde nach dem Pixel in einem Bild gefragt, daher sind so gut wie alle Lösungen nur über Anpassungen nutzbar...

MfG
Muetze1
  Mit Zitat antworten Zitat
TStringlist

Registriert seit: 1. Dez 2003
360 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Farbe unter dem Mauszeiger erkennen

  Alt 23. Jan 2005, 05:34
Moin, Moin

Klar Shr, dürfte ja auch eine ganze Stange schneller sein. (Die Ecke war mir da im Moment aber auch gar nicht so wichtig.)

...das Bild, über welchem er aber immer mit dem Cursor drüber ist! Die Ergebnismenge ist also eher größer als notwendig gewesen ...und sollte event. jetzt nur auf das Bild reduziert werden? Z.B. so:

Delphi-Quellcode:
  with Mouse, Image1 do
  if (CursorPos.X < ClientOrigin.X) or (CursorPos.X >= ClientOrigin.X + Width)
  or (CursorPos.Y < ClientOrigin.Y) or (CursorPos.Y >= ClientOrigin.Y + Height)
  then Label1.Caption := ''
  else begin
    .
    .
    .
  end;
MfG (& Thx ggf.)
  Mit Zitat antworten Zitat
Neuni

Registriert seit: 25. Feb 2004
815 Beiträge
 
Delphi 7 Personal
 
#10

Re: Farbe unter dem Mauszeiger erkennen

  Alt 4. Feb 2005, 13:53
So, das geht ja schon wunderbar, aber:
Kann ich das ganzeauch in Hex ausgeben lassen statt RGB? Wenn ja: Wie?

Edit: Habs schon selber hinbekommen, trotzdem danke
  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 16:47 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