对于 vcl,我使用了这个:
procedure MovingDots(X, Y: Integer; ACanvas: TCanvas); stdcall;
begin
{$R-}
Inc(ALooper);
ACounter := ACounter shl 1; // Shift the bit left one
if ACounter = 0 then
ACounter := 1; // If it shifts off left, reset it
if (ACounter and 224) > 0 then // Are any of the left 3 bits set?
// FMX.Canvas does not have Pixels
ACanvas.Pixels[X, Y] := ASelectionColor1 // Erase the pixel
else
ACanvas.Pixels[X, Y] := ASelectionColor2; // Draw the pixel
{$R+}
end;
如何从 FMX Canvas 设置 X、Y 处的颜色?
最佳答案
根据这个example
,这应该有效:
var
vBitMapData : TBitmapData;
ASelectionColor : TAlphaColor;
...
// Define ASelectionColor somewhere
// Get write access to the bitmap
if ACanvas.Bitmap.Map (TMapAccess.maWrite, vBitMapData) then
begin
try
vBitmapData.SetPixel (x, y, ASelectionColor); // set the pixel color at x, y
finally
ACanvas.Bitmap.Unmap(vBitMapData);
end;
end;
请注意,锁定/解锁位图的映射策略是在 FM2(即 Delphi-XE3)中引入的。
关于delphi - 如何设置 FMX.Canvas 上光标下像素的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214827/