AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Auf JPEG Bild zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf JPEG Bild zeichnen

Ein Thema von TUX_der_Pinguin · begonnen am 24. Jul 2008 · letzter Beitrag vom 25. Jul 2008
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Auf JPEG Bild zeichnen

  Alt 24. Jul 2008, 13:00
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:
With Image1.Canvas do begin
    Font.Name := 'Arial';
    Font.Size := 12;
    Font.Color := clRed;
    TextOut(10, 10, 'TEST - XXXXXXXXXX');
  end;
Diese Möglichkeit schlägt fehl da es sich nicht um ein "Bitmap" handelt.


Delphi-Quellcode:
With Image1.Picture.Bitmap.Canvas do begin
    Font.Name := 'Arial';
    Font.Size := 12;
    Font.Color := clRed;
    TextOut(10, 10, 'TEST - XXXXXXXXXX');
  end;
Bei dieser Möglichkeit kommt zwar keine Exception, sondern das Bild verschwindet man sieht
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#2

Re: Auf JPEG Bild zeichnen

  Alt 24. Jul 2008, 13:12
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Auf JPEG Bild zeichnen

  Alt 24. Jul 2008, 13:23
Zitat von DeddyH:
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.
Hmm wie müßte ich das den machen? Zurückkonvertieren müßte ich nicht machen, ist ja nur eine
reine Anzeige die ich brauche.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#4

Re: Auf JPEG Bild zeichnen

  Alt 24. Jul 2008, 13:26
Na, Bitmap erzeugen, mit Assign zuweisen und auf den Canvas zeichnen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Auf JPEG Bild zeichnen

  Alt 25. Jul 2008, 10:26
Ich habe das ganze jetzt mal folgender maßen gemacht und es scheint auch zu funktionieren.

Delphi-Quellcode:
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;
Ich habe jetzt nur das Problem der Text den ich auf die Grafik zeichne wird mit Verzerrt,
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?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.622 Beiträge
 
Delphi 12 Athens
 
#6

Re: Auf JPEG Bild zeichnen

  Alt 25. Jul 2008, 12:02
Versuch mal so etwas:
Delphi-Quellcode:
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;
[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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Auf JPEG Bild zeichnen

  Alt 25. Jul 2008, 12:37
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 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