我假设您要绘制一个通常由鼠标移动绑定的选择矩形,从而删除先前绘制的矩形并在当前鼠标位置绘制一个新矩形。这可以通过在 XOR 模式下使用笔绘图来完成:
function NegativeColor(AColor: TColor): TColor;
begin
Result := RGB(255 - GetRValue(AColor), 255 - GetGValue(AColor),
255 - GetBValue(AColor));
end;
procedure TForm1.Button14Click(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.SetSize(100, 100);
Bmp.Canvas.Brush.Style := bsClear;
Bmp.Canvas.Pen.Color := NegativeColor(clLime);
Bmp.Canvas.Pen.Mode := pmXor;
Bmp.Canvas.Rectangle(10, 10, 50, 50);
Canvas.Draw(0, 0, Bmp);
Bmp.Canvas.Rectangle(10, 10, 50, 50); // "Erase" previous rectangle
Bmp.Canvas.Rectangle(10, 10, 90, 90); // Draw new rectangle
Canvas.Draw(0, 100, Bmp);
finally
Bmp.Free;
end;
end;