gpt4 book ai didi

delphi - 移动位图像素

转载 作者:行者123 更新时间:2023-12-03 15:19:23 26 4
gpt4 key购买 nike

如果我想移动/移动位图的像素,我该怎么做?

procedure MovePixels(Bitmap: TBitmap; Horizontal, Vertical: Integer);
begin
{ move the Bitmap pixels to new position }
end;

示例:

enter image description here

通过调用 MovePixels(Image1.Picture.Bitmap, 20, 20) 例如将输出如下:

enter image description here

指定/更改移动像素后留下显示的 Canvas 的颜色也很有用。因此,在此示例中,灰色/棕色可能是蓝色等。

我注意到有 Bitmap.Canvas.PixelsBitmap.Canvas.MoveTo 属性,这是我需要执行此操作的属性吗?

我真的不知道,但我打赌这很简单..

最佳答案

您无法轻松移动像素,但可以制作副本。

var
Source, Dest: TRect;
....
Source := Rect(0, 0, Bitmap.Width, Bitmap.Height);
Dest := Source;
Dest.Offset(X, Y);
Bitmap.Canvas.CopyRect(Dest, Bitmap.Canvas, Source);

剩下的就是用您选择的颜色填充空间,我相信您只需调用几次 FillRect 即可轻松完成。

但是,我认为不就地尝试这样做会更简单。相反,我会创建一个新的位图。也许像这样:

function CreateMovedImage(Bitmap: TBitmap; X, Y: Integer; BackColor: TColor): TBitmap;
var
Source, Dest: TRect;
begin
Source := Rect(0, 0, Bitmap.Width, Bitmap.Height);
Dest := Source;
Dest.Offset(X, Y);

Result := TBitmap.Create;
Try
Result.SetSize(Bitmap.Width, Bitmap.Height);

Result.Canvas.Brush.Style := bsSolid;
Result.Canvas.Brush.Color := BackColor;
Result.Canvas.FillRect(Source);

Result.Canvas.CopyRect(Dest, Bitmap.Canvas, Source);
Except
Result.Free;
raise;
End;
end;

关于delphi - 移动位图像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com