标题可能非常不清楚,但我不知道如何以不同方式说明。
我有一个工作项目 - 将图像的一部分复制到另一部分。像这样:
我使用以下方法实现了这一目标:
procedure TForm1.StampCircle;
var
DstRect, SrcRect: TRect;
x, y: Integer;
MyRgn: HRGN;
begin
x := shp_Dragger.Left;
y := shp_Dragger.Top;
MyRgn := CreateEllipticRGN(shp_Dragger.Left, shp_Dragger.Top, shp_Dragger.Left + shp_Dragger.Width, shp_Dragger.Top + shp_Dragger.Height);
SelectClipRgn(Img1.Canvas.Handle, MyRgn);
with Img1.Canvas do
begin
CopyMode := cmSrcCopy;
SrcRect := Rect(Shape_Start_x, Shape_Start_y, Shape_End_x, Shape_End_y);
DstRect := Rect(shp_Dragger.Left, shp_Dragger.Top, shp_Dragger.Left + shp_Dragger.Width, shp_Dragger.Top + shp_Dragger.Height);
CopyRect(DstRect, Img1.Canvas, SrcRect);
end;
Img1.Invalidate;
SelectClipRgn(Img1.Canvas.Handle, HRGN(nil));
DeleteObject(MyRgn);
end;
问题在于它不是100%需要做的事情。
注意首次加载图像时,图像会从JPEG转换为BMP。
procedure TForm1.LoadAndConvertToBMP(FilePath: WideString);
var
OleGraphic: TOleGraphic;
fs: TFileStream;
Source: TImage;
begin
try
OleGraphic := TOleGraphic.Create; {The magic class!}
fs := TFileStream.Create(FilePath, fmOpenRead or fmSharedenyNone);
OleGraphic.LoadFromStream(fs);
Source := Timage.Create(Nil);
Source.Picture.Assign(OleGraphic);
bmp := TBitmap.Create; {Converting to Bitmap}
bmp.Width := Source.Picture.Width;
bmp.Height := source.Picture.Height;
bmp.Canvas.Draw(0, 0, source.Picture.Graphic);
img1.Picture.Bitmap := BMP; {Show the bitmap on form}
finally
fs.Free;
OleGraphic.Free;
Source.Free;
end;
end;
我在网上看到了很多想法,我尝试了很多不同的方法,但没有一种方法有效。
我真的很感激任何帮助或方向,即在哪里寻找或尝试什么。
谢谢