如何识别 Firemonkey 中鼠标点击位置的像素颜色?
How do I identify the colour of a pixel at the location of a mouse click in Firemonkey?
我在VCL中做过类似的事情。我绝不是专业人士,我不认为这是最好的方法,但这就是我所拥有的:
pt := TImage(Sender).ScreenToClient(Mouse.CursorPos);
color := image1.Canvas.Pixels[pt.X, pt.Y];
我基本上是在寻求一些帮助,以有效地将此代码移植到 firemonkey 中,以获得相同的结果,考虑到 images/canvases 等似乎工作方式略有不同,而且我对它很不熟悉。
提前致谢。
我猜你需要这样的东西:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
var
Cl: TAlphaColor;
Dt: TBitmapData;
begin
if Image1.Bitmap.Map(TMapAccess.maRead, Dt) then
begin
Cl:= Dt.GetPixel(Trunc(X), Trunc(Y));
Image1.Bitmap.Unmap(Dt);
end;
end;
我在VCL中做过类似的事情。我绝不是专业人士,我不认为这是最好的方法,但这就是我所拥有的:
pt := TImage(Sender).ScreenToClient(Mouse.CursorPos);
color := image1.Canvas.Pixels[pt.X, pt.Y];
我基本上是在寻求一些帮助,以有效地将此代码移植到 firemonkey 中,以获得相同的结果,考虑到 images/canvases 等似乎工作方式略有不同,而且我对它很不熟悉。
提前致谢。
我猜你需要这样的东西:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
var
Cl: TAlphaColor;
Dt: TBitmapData;
begin
if Image1.Bitmap.Map(TMapAccess.maRead, Dt) then
begin
Cl:= Dt.GetPixel(Trunc(X), Trunc(Y));
Image1.Bitmap.Unmap(Dt);
end;
end;