Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Farbe zu string? (https://www.delphipraxis.net/12451-farbe-zu-string.html)

Die Muhkuh 27. Nov 2003 17:01


Farbe zu string?
 
Wie kann ich denn eine Farbe die ich per Mouse.CursoerPos abrufe in einen String umwandeln?

Sanchez 27. Nov 2003 17:17

Re: Farbe zu string?
 
Mouse.CursorPos liefert keine Farbe sondern einen TPoint. Wie kommst du zu deiner Farbe?

Die Muhkuh 27. Nov 2003 17:23

Re: Farbe zu string?
 
Hier mal der Code:
Delphi-Quellcode:
function GetPixel(Pos1: TPoint): TColor;
var
  DC: HDC;
  Handle: HWND;
begin
  Handle:=WindowFromPoint(Pos1);
  DC:=GetDC(Handle);
  Pos1.x := Mouse.CursorPos.x;
  Pos1.y := Mouse.CursorPos.y;
  result:=Windows.GetPixel(DC, Pos1.X, Pos1.Y);
  ReleaseDC(Handle, DC);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.caption := inttostr(GetPixel(Pos1));
end;

Sanchez 27. Nov 2003 17:25

Re: Farbe zu string?
 
Du bekommst die Farbe aber mit GetPixel nicht mit CursorPos. Du hast die Farbe ja eh schon in einem String gestopft.

Die Muhkuh 27. Nov 2003 17:26

Re: Farbe zu string?
 
Zitat:

Zitat von Spider
Wie kann ich denn eine Farbe die ich per Mouse.CursoerPos abrufe in einen String umwandeln?


Man hab ich umständlich geschrieben! Ich meinte die Farbe (Pixel) wird durch die Mouse.Cursorpos bestimmt! Nicht die Farbe sondern das Pixel!

Sebastian Nintemann 27. Nov 2003 17:31

Re: Farbe zu string?
 
Hallo Spider, wie meinst du denn 'die Farbe als String'?

Guck Dir mal ColorToString an (soweit ich mich erinnere Hex-Darstellung als 4byte Cardinal, also etwa so $00BBGGRR).

Ansonsten:

Delphi-Quellcode:
function ColorStr(const aCol: Cardinal; const Hex: boolean = false): string;
begin
  result := '';
  case Hex of
    true:
      result := '#'+IntToHex(Byte(aCol),2)+IntToHex(Byte(aCol shr $08),2)+IntToHex(Byte(aCol shr $10),2);
    false:
      result := 'RGB('+IntToStr(Byte(aCol))+','+IntToStr(Byte(aCol shr $08))+','+IntToStr(Byte(aCol shr $10))+')';
  end;
end;
Mit Hex kannst du angeben ob du ein RGB-Trippel (Standard, Hex = false) oder in hexadezimaler Darstellung (HTML-Darstellung, Hex = true) haben willst.

Gruß, Sebastian

Die Muhkuh 27. Nov 2003 17:45

Re: Farbe zu string?
 
Sorry, aber es geht genauso wie ich es geschrieben hatte! :oops:

Alexander 27. Nov 2003 17:47

Re: Farbe zu string?
 
Ansonsten kuck mal in die Sourcen der Units und such mal nach ColorToString und StringToColor

Sebastian Nintemann 27. Nov 2003 17:50

Re: Farbe zu string?
 
Wie meinst du denn wie du es geschrieben hast?
IntToStr? Liefert dir eine Zahl (als String) aus der die Farbe auf den ersten Blick nicht ersichtlich ist. Da würde ich doch IntToHex bevorzugen.

Gruß, Sebastian


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz