阅读画布时TImage图片消失了吗?

Jer*_*dge 1 delphi canvas timage delphi-xe2

TImage对表单有一个简单的控制.我在设计时分配了一个Bitmap图像.在运行时,我使用了画布TImage.Picture.Bitmap.Canvas.一切正常.然后,我在设计时加载JPEG图像.但是,现在当我读到这个画布时,图片突然消失了.

为什么会发生这种情况,我该如何避免呢?

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
  Canvas: TCanvas;
begin
  Canvas:= Image1.Picture.Bitmap.Canvas;
  //Do something with Canvas, but canvas is empty and image disappeared
end;
Run Code Online (Sandbox Code Playgroud)

And*_*and 12

这是预期的,因为JPG图像不是位图(BMP)图像.

您必须将其转换为位图才能对其执行某些操作:

var
  bm: TBitmap;
begin
  bm := TBitmap.Create;
  try
    bm.Assign(Image1.Picture.Graphic);
    bm.Canvas.DoSomethingReallyAwesome(ttExtraAwesome);
    bm.SaveToFile('C:\Users\Andreas Rejbrand\Desktop\test5.bmp');
  finally
    bm.Free;
  end;
Run Code Online (Sandbox Code Playgroud)