Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TPicture in TImage verschieben (auch PNG, etc.) (https://www.delphipraxis.net/167361-tpicture-timage-verschieben-auch-png-etc.html)

Destroxi 26. Mär 2012 12:54

TPicture in TImage verschieben (auch PNG, etc.)
 
Hey.
Ich hab ein TImage und will mein TPicture darin verschieben - dies soll auch mit PNG's (TLMDPNGImage) und JPegs (TJPEGImage) usw. klappen.
Hat jemand eine Idee?

PS: Es muss nicht umbedingt ein TImage sein; es soll eine Abgrenzung Breite = X Höhe = Y geben und in der soll man es verschieben können.
Falls es so eine Frage schon gibt, sorry, ich habe nix gefunden was mir geholfen hat.

Mfg, Destroxi

Bummi 26. Mär 2012 13:03

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
TPaintBox im OnDraw Canvas.Draw(X,Y,Graphic)

Destroxi 26. Mär 2012 13:27

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Danke für die schnelle Antwort,
weißt du auch wie ich ein Canvas-Handle auf ein TImage bekomme, wenn ich ein (z.B.) TLMDPNGObject drin habe (oder auch TJPEGImage)?

Mfg, Destroxi

DeddyH 26. Mär 2012 13:30

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
TImage.Canvas.Handle, oder was meinst Du jetzt?

EWeiss 26. Mär 2012 13:41

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Ich denke er versucht wie in diesem Beitrag erwähnt
das irgendwie umzusetzen.

gruss

Destroxi 26. Mär 2012 15:21

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Ne, das ist was anderes ;)
Wenn ich das TImage.Canvas nehme, gehts nur bei Bitmaps..
Ich will aber wenn ich
Delphi-Quellcode:
TImage.Picture.Assign(TLMDPNGObject);
mache, auch mit PNG's und JPG's ein Handle haben.

PS: Ich brauche es nur für Canvas.Pixels!
Und auch nur zur Abfrage, nicht zur beschreibung.

Wie geht das ? ^^

Mfg, Destroxi

DeddyH 26. Mär 2012 15:26

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Versuch es mal mit TImage.Picture.Bitmap.Canvas.Handle.

Destroxi 26. Mär 2012 15:31

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Das klappt doch aber nicht bei PNG's... :?:

Mfg, Destroxi

Popov 26. Mär 2012 15:34

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Code:
Wenn ich das TImage.Canvas nehme, gehts nur bei Bitmaps..
Schon mal was von TImage.Picture gehört? TImage.Picture.Bitmap, TImage.Picture.Jpeg usw.


Was ich jetzt schreiben ist nur meine Kenntnis, die kann auch falsch sein, also mit Vorsicht genießen.

Man kann viele Formate laden und anzeigen lassen, aber eine Canvas hat nur die Bitmap. Wenn, dann muß zuerst in Bitmap konvertiert werden und dann wieder zurück.

Das gilt meines Wissens nach nur für die Standard-Grafiken. Es steht jedem frei eine eigene PNG Klasse zu erstellen und dort eine Leinwand anbieten die und der auch den Namen Canvas geben. Aber soweit ich weiß hat das was Delphi selbst anbietet keine Canvas, bis auf Bitmap.

DeddyH 26. Mär 2012 15:36

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Um ganz sicher zu gehen, kannst Du temporär eine TBitmap erzeugen und mit Assign den Inhalt aus TImage.Picture.Graphic hineinkopieren. Das ist vielleicht nicht ganz das, was Du willst, aber so hast Du garantiert einen Canvas, mit dem Du arbeiten kannst.

Destroxi 26. Mär 2012 15:51

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
Ja, das kann ich machen, wird wohl auch sein Ziel bringen, ist nur halt nicht ganz so professionell^^
Aber erstmal werd ich diese Möglichkeit nehmen, Danke ;)

Edit: Ich kriegs nich umgewandelt -.-
Assign gibt Access Vioulation Fehler ...
Delphi-Quellcode:
procedure JPEGtoBMP(const FileName: TFileName);
var
  jpeg: TJPEGImage;
  bmp: TBitmap;
begin
  jpeg := TJPEGImage.Create;
  try
    jpeg.CompressionQuality := 100; {Default Value}
    jpeg.LoadFromFile(FileName);
    bmp := TBitmap.Create;
    try
      bmp.Assign(jpeg);
      bmp.SaveTofile(ChangeFileExt(FileName, '.bmp'));
    finally
      bmp.Free
    end;
  finally
    jpeg.Free
  end;
end;
Mfg, Destroxi

Bummi 26. Mär 2012 16:15

AW: TPicture in TImage verschieben (auch PNG, etc.)
 
ich würde nicht auf ein TImage zeichnen, male lieber in z.B. einer Paintbox, bei PNG,ICO, etc sind sonst die Transparenzen weg.
Sinnfrei, aber zur Demo
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
   jpg:TJpegImage;
   bmp:TBitmap;
begin
   jpg:=TJpegImage.Create;
   jpg.LoadFromFile('C:\bilder1\20111213_120009.jpg');
   Canvas.Draw(100,100,jpg);

   bmp := TBitmap.Create;
   try
     bmp.Width := jpg.Width div 10;
     bmp.height := jpg.Height div 10;
     bmp.Canvas.StretchDraw(Rect(0,0,bmp.Width,bmp.Height),jpg);
     Image1.picture.Bitmap.Assign(bmp);
   finally
     bmp.Free;
   end;
   try

   finally
     jpg.Free;
   end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:11 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