从位图获取像素颜色返回错误的坐标

时间:2017-01-28 14:48:22

标签: bitmap firemonkey getpixel onmousemove

我对XE10 Firemonkey中的多设备编程非常陌生,并想知道是否有人可以帮我解决从位图读取像素颜色的问题。

我想要做的是从Timage控件中的位图中采样颜色(就像吸管颜色采样器的工作方式)。我在TRectangle控件中显示光标下的颜色。

这是我在图片上的onmousemove事件中的代码

procedure TMountboardForm.imagemountboardMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Single);
var
  vBitMapData : TBitmapData;
  ASelectionColor : TAlphaColor;
begin
if imagemountboard.bitmap.Map (TMapAccess.maread, vBitMapData) then
begin
  try
   ASelectionColor := vBitmapData.GetPixel (round(X), round(Y)); 
  finally
    imagemountboard.bitmap.Unmap(vBitMapData);
  end;
  rectangle1.Fill.Color :=  ASelectionColor;
end;
end;

这种“排序”有效,但X& Y坐标似乎是错误的。它从光标的某个方向拾取颜色,而不是光标本身下的颜色

有人可以告诉我哪里出错了吗?

0 个答案:

没有答案