Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Aus Brush die Pinselfarbe ermitteln? (https://www.delphipraxis.net/187004-aus-brush-die-pinselfarbe-ermitteln.html)

DualCoreCpu 20. Okt 2015 08:24

Aus Brush die Pinselfarbe ermitteln?
 
Hallo,

ich habe einen Quellcode aus dem Internet, den ich gerne weiter entwickeln möchte. Da gibt es eine Funktion, die einen Parameter vom Typ HBRUSH übergibt. Leider fehlt noch die Implementation dazu.

Wie erhalte ich die Pinselfarbe aus diesem Parameter vom Typ HBrush.

Es gibt eine API Funktion namens GetDCBrushColor(). Abe rdieser muss ein Parameter vom Typ HDC, dem Gerätekontext übergeben werden. Ich brauche aber eine Funktion, die stattdessen den Pinsel vom Typ HBRUSH erhält und dann die Farbe dieses Pinsels zurück gibt.

Gibt es da eione fertige Funktion oder muss ich die selber schreiben?

Wie könnte ich das machen, wenn selber schreiben?

TiGü 20. Okt 2015 09:09

AW: Aus Brush die Pinselfarbe ermitteln?
 
Zitat:

Zitat von DualCoreCpu (Beitrag 1319165)
ich habe einen Quellcode aus dem Internet, den ich gerne weiter entwickeln möchte.

Ist dieser Quellcode geheim?

Wie wäre es damit?
Delphi-Quellcode:
var
  YourBrushHandle : HBRUSH;
  LBrush : TBrush;
  YourSearchedColor : TColor;
begin
  YourSearchedColor := 0;
  LBrush := TBrush.Create;
  try
    LBrush.Handle := YourBrushHandle;
    YourSearchedColor := LBrush.Color;
  finally
    LBrush.Free;
  end;
end;

Neutral General 20. Okt 2015 09:31

AW: Aus Brush die Pinselfarbe ermitteln?
 
Nach etwas googeln kam ich auf folgende API: GetObject
Delphi-Quellcode:
// Ist in meinem Delphi 7 was ich hier habe nicht definiert,
// in neueren Delphi-Versionen wahrscheinlich schon
type
  TLogBrush = record
    lbStyle: Cardinal;
    lbColor: TColor;
    lbHatch: Cardinal;
  end;

function GetBrushColor(ABrushHandle: HBRUSH): TColor;
var brushInfo: TLogBrush;
begin
  if GetObject(ABrushHandle, SizeOf(TLogBrush), @brushInfo) <> 0 then
    Result := brushInfo.lbColor
  else
    Result := clNone;
end;

DualCoreCpu 20. Okt 2015 11:51

AW: Aus Brush die Pinselfarbe ermitteln?
 
Danke an alle! Funktioniert so wie ich es haben will. Beide Varianten funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:22 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