delphi 如何从FMX替换Bitmap.ClearRect在VCL上替换?

t40tm48m  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(192)

我尝试用VCL重写一个FMX项目。
FMX中QR码绘图代码:

for Column := 0 to QRCode.Columns - 1 do
begin
  if QRCode.IsBlack[Row, Column] then
    QRCodeBitmap.ClearRect(TRectF.Create(PointF(Column, Row) * Scale,
      Scale, Scale), TAlphaColors.Black);
end;

如何在VCL中替换QRCodeBitmap.ClearRect()
我试着这样做:

if (QRCode.IsBlack[Row, Column]) then
begin
  QRCodeBitmap.Canvas.Pixels[Column, Row] := clBlack;
end else
begin
  QRCodeBitmap.Canvas.Pixels[Column, Row] := clWhite;
end;

但它并不像我想要的那样工作。

r7xajy2e

r7xajy2e1#

FMX中的TBitmap.ClearRect()方法用颜色填充矩形区域。
在VCL中,您可以使用TBitmap.Canvas.FillRect()方法执行相同的操作,其中填充颜色在TBitmap.Canvas.Brush.Color属性中指定,例如:

for Column := 0 to QRCode.Columns - 1 do
begin
  if QRCode.IsBlack[Row, Column] then
  begin
    QRCodeBitmap.Canvas.Brush.Color := clBlack;
    QRCodeBitmap.Canvas.FillRect(TRect.Create(Point(Column * Scale, Row * Scale),
      Scale, Scale));
  end;
end;

相关问题