Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Canvas TImage??? (https://www.delphipraxis.net/110291-canvas-timage.html)

Mooshead 16. Mär 2008 09:49


Canvas TImage???
 
Hallo,

folgendes Problem:

Delphi-Quellcode:
  Image1.LoadFromFile(Pfad.jpg);
  Image1.Canvas.MoveTo(x,y);
  Image1.Canvas.LineTo(x,y);
  ...
Dann bekomme ich die Meldung:
Zitat:

Can only modify an image if it contains a bitmap
Wie kann ich das umgehen wenn es sich bei dem Bild um ein jpeg handelt? :gruebel:

Viele Grüße

dajuhsa 16. Mär 2008 10:27

Re: Canvas TImage???
 
diese frage habe ich auch schon mal gestellt^^, benutze am besten die suchfunktion.

bitsetter 16. Mär 2008 10:31

Re: Canvas TImage???
 
Hallo,

hast du
Delphi-Quellcode:
uses Jpeg;
hinzugefügt?
EDIT: Du musst das Jpeg Image in ein Bitmap umwandeln.

Mooshead 16. Mär 2008 10:35

Re: Canvas TImage???
 
Ja das hab ich auch schon versucht aber ich weiß nicht genau wie das geht.

uses jpeg ist drin

bitsetter 16. Mär 2008 10:41

Re: Canvas TImage???
 
Delphi-Quellcode:
var
  jpg: TJPEGImage;
begin
  jpg:= TJPEGImage.Create;
  try
    jpg.LoadFromFile(op.FileName);
    image1.Picture.Bitmap.Assign(jpg);
  finally
    jpg.Free;
  end;

  Image1.Canvas.MoveTo(0,0);
  Image1.Canvas.LineTo(80,80);

Mooshead 16. Mär 2008 10:49

Re: Canvas TImage???
 
Vielen Dank so klappts :dp:

turboPASCAL 16. Mär 2008 10:58

Re: Canvas TImage???
 
Oder:

Delphi-Quellcode:
procedure ConvertImageToBitmap(Image: TImage);
var TmpPic: TPicture;
begin
  TmpPic := TPicture.Create;
  try
    TmpPic.Bitmap.Assign(Image.Picture.Graphic);
    Image.Picture.Bitmap.Assign(TmpPic.Bitmap);
  finally
    TmpPic.Free;
  end;
end;

procedure FormXYZ.Bla;
begin
  Image1.LoadFromFile(Pfad.jpg);
  ConvertImageToBitmap(Image1);

  Image1.Picture.Bitmap.Canvas.MoveTo(x,y);
  Image1.Picture.Bitmap.Canvas.LineTo(x,y);

  { Besser Schaut's so aus:

  if Assigned(Image1.Picture.Bitmap) then
    with Image1.Picture.Bitmap do
    begin
      Canvas.MoveTo(x,y);
      Canvas.LineTo(x,y);
    end;

  }
 
  Image1.Invalidate;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz