diff --git a/components/mbColorLib/ScreenWin.pas b/components/mbColorLib/ScreenWin.pas index a6f421a05..09858c19b 100644 --- a/components/mbColorLib/ScreenWin.pas +++ b/components/mbColorLib/ScreenWin.pas @@ -29,6 +29,8 @@ type private FOnSelColorChange: TNotifyEvent; FOnKeyDown: TKeyEvent; + function GetDesktopColor(const X, Y: Integer): TColor; + function ReadScreenColor(const X, Y: Integer): TColor; protected procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW; @@ -51,21 +53,6 @@ implementation uses HTMLColors; -function GetDesktopColor(const X, Y: Integer): TColor; -var - c: TCanvas; - screenDC: HDC; -begin - c := TCanvas.Create; - try - screenDC := GetDC(0); - c.Handle := screenDC; - Result := c.Pixels[X, Y]; - finally - c.Free; - end; -end; - { TScreenForm } @@ -139,4 +126,32 @@ begin Top := 0; end; +function TScreenForm.GetDesktopColor(const X, Y: Integer): TColor; +var + savedAlphaBlendValue: Integer; +begin + savedAlphaBlendValue := AlphablendValue; + try + AlphaBlendValue := 0; + Result := ReadScreenColor(X, Y); + finally + AlphaBlendValue := savedAlphaBlendValue; + end; +end; + +function TScreenForm.ReadScreenColor(const X, Y: Integer): TColor; +var + c: TCanvas; + screenDC: HDC; +begin + c := TCanvas.Create; + try + screenDC := GetDC(0); + c.Handle := screenDC; + Result := c.Pixels[X, Y]; + finally + c.Free; + end; +end; + end.