![]() |
Auf JPEG Bild zeichnen
Hallo,
ich habe eine TImage Objekt, dort hinein lade ich ein JPEG mit Image.Picture.LoadFormFile('test.jpg'), anschließend würde ich gern einen Text auf das Bild schreiben und habe folgende 2 Möglichkeiten getestet.
Delphi-Quellcode:
Diese Möglichkeit schlägt fehl da es sich nicht um ein "Bitmap" handelt.
With Image1.Canvas do begin
Font.Name := 'Arial'; Font.Size := 12; Font.Color := clRed; TextOut(10, 10, 'TEST - XXXXXXXXXX'); end;
Delphi-Quellcode:
Bei dieser Möglichkeit kommt zwar keine Exception, sondern das Bild verschwindet man sieht
With Image1.Picture.Bitmap.Canvas do begin
Font.Name := 'Arial'; Font.Size := 12; Font.Color := clRed; TextOut(10, 10, 'TEST - XXXXXXXXXX'); end; nur das leere Formular und der Text ist schonmal gar nicht zu sehen. Ich bin etwas ratlos .. ich hoffe jemand hat einen Tipp oder eine Idee für mich. mfg TUX |
Re: Auf JPEG Bild zeichnen
Ich wüsste im Moment nur die Möglichkeit, die JPEG in TBitmap zu konvertieren, auf diese Bitmap zu zeichnen und ggf. wieder zurückzukonvertieren.
|
Re: Auf JPEG Bild zeichnen
Zitat:
reine Anzeige die ich brauche. |
Re: Auf JPEG Bild zeichnen
Na, Bitmap erzeugen, mit Assign zuweisen und auf den Canvas zeichnen.
|
Re: Auf JPEG Bild zeichnen
Ich habe das ganze jetzt mal folgender maßen gemacht und es scheint auch zu funktionieren.
Delphi-Quellcode:
Ich habe jetzt nur das Problem der Text den ich auf die Grafik zeichne wird mit Verzerrt,
procedure TfrmMain.Button4Click(Sender: TObject);
var Jpeg : TJPEGImage; begin Jpeg := TJPEGImage.Create; try Jpeg.LoadFromFile('test.jpg'); Image1.Picture.Bitmap.Assign(Jpeg); finally Jpeg.Free; end; end; d.h. das Bild ist eigentlich zu groß für die Auflösung des Monitors und wird mit der option "Proportional" im richtigen Verhältnis verkleinert, jedoch wird auch der Text verkleinert. Wie bekomme ich den Text in "originalgröße" auf das Bild? |
Re: Auf JPEG Bild zeichnen
Versuch mal so etwas:
Delphi-Quellcode:
[edit] Oh sorry, falsch verstanden. Dann nimm doch statt eines TImage eine TPaintbox, zeichne da die Grafik drauf und anschließend den Text darüber, das dürfte das Einfachste sein. [/edit]
procedure TFrmMain.ShowPictureWithText;
var img: TJPEGImage; bm: TBitmap; R: TRect; begin img := TJPEGImage.Create; try img.LoadFromFile('C:\test.jpg'); bm := TBitmap.Create; try bm.Assign(img); SetBkMode(bm.Canvas.Handle,TRANSPARENT); bm.Canvas.Font.Name := 'Arial'; bm.Canvas.Font.Size := 16; bm.Canvas.Font.Color := clRed; bm.Canvas.Font.Style := [fsBold]; R := Rect(0,0,bm.Width,bm.Height); DrawText(bm.Canvas.Handle,'Hallo',-1,R, DT_VCENTER or DT_CENTER or DT_SINGLELINE); Image1.Picture.Assign(bm); finally bm.Free; end; finally img.Free; end; end; |
Re: Auf JPEG Bild zeichnen
Vielen dank für die Hilfe, ich habe meine Anwendung überarbeitet dahingehend das ich mit StretchBlt
selber das Bild verkleiner und somit auch nicht mehr das Problem habe das der Text verzerrt. Diese lösung ist flexibler da ich mal das Bild in voller Größe darstellen will und dann wäre der Text auf der Grafik im anderen fall ist das Bild kleiner und der Text wäre ausserhalb, da ich aber den Text immer am oberen bzw. unteren Bildschirmrand haben möchte macht es daher mehr sinn mit StretchBlt zu arbeiten. Aber denoch vielen dank, und ein schönes Wochenende noch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz