Изображение изображения исчезает при чтении его холста?

У меня простой 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;

1 ответ

Решение

Это ожидаемо, поскольку изображение 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;
Другие вопросы по тегам