1

TImage在表单上有一个简单的控件。我在设计时分配了一个位图图像。运行时,我使用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;
4

1 回答 1

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;
于 2013-01-26T17:20:03.247 回答