如何在TImage中使用GDIPlus与Delphi 2010获取鼠标光标下像素的alpha值?从鼠标光标下的像素获取alphachannel值
我试过这个,但A总是255?我做错了什么?
procedure TFormMain.Image1MouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
GPBitmap: TGPBitmap;
iColorRef: Cardinal;
iColor: TColor;
A, R, G, B: Byte;
iARGB: ARGB;
begin
if Assigned (Image1.Picture) then
begin
GPBitmap := TGPBitmap.Create (Image1.Picture.Bitmap.Handle);
try
// Get alpha 0-255 from GPBitmap
GPBitmap.GetPixel (X, Y, iColorRef);
iARGB := ColorRefToARGB (iColorRef);
A := GetAlpha (iARGB);
AlphaUnderCursor1.Caption := 'Alpha: ' + IntToStr (A);
iColor := Image1.Canvas.Pixels [ X, Y ];
GetRGB (iColor, R, G, B);
Shape1.Brush.Color := iColor;
finally
GPBitmap.Free;
end;
end;
好的...做到了,但结果相同。 iStatus:= GPBitmap.GetPixel(X,Y,iColorRef); iStatus = InvalidParameter? – Bill 2012-04-12 19:00:45
也许没有透明度,alpha是真的255? – 2012-04-12 19:10:34
不。我画了10 px线与可见的alpha颜色,然后将鼠标移到画出的线....绘制的线alpha颜色似乎是至少在视觉上是正确的。 – Bill 2012-04-12 19:14:15