Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Auf ein Image schreiben (https://www.delphipraxis.net/17744-auf-ein-image-schreiben.html)

Sanchez 11. Mär 2004 13:22

Re: Auf ein Image schreiben
 
Hallo,

So schaltest du die Hintergrundfarbe des Textes auf transparent:

Delphi-Quellcode:
  SetBkMode(Image1.Picture.Bitmap.Canvas.Handle, TRANSPARENT);
grüße, daniel

dedeur 11. Mär 2004 13:29

Re: Auf ein Image schreiben
 
Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if FTextMode then begin
    edText.Left := X + Image1.Left;
    edText.Top := Y + Image1.Top;
    edText.Visible := true;
    edText.AutoSize := true;
    edText.Text := '';
// Die gewünschten Einstellungen aus dem FontDiag werden in den TEXT übernommen
    Image1.Picture.Bitmap.Canvas.Font := FontDialog1.Font;
    SetBkMode(Image1.Picture.Bitmap.Canvas.Handle, TRANSPARENT);
    FTextMode  := false;
  end else begin
    Image1.Picture.Bitmap.Canvas.TextOut(edText.Left - Image1.Left , edText.Top - Image1.Top,
    edText.Text,);
    edText.Visible := false;
  end;
hab es mal so übernommen er führt auch aus jedoch ist der Hintergrund immer noch weiß :gruebel:

Sanchez 11. Mär 2004 13:47

Re: Auf ein Image schreiben
 
Ersetz das SetBkMode mal durch
Delphi-Quellcode:
  Image1.Picture.Bitmap.Canvas.Brush.Style := bsClear;
Es reicht allerdings, wenn du diese Zuweisung im OnShow machst.

Ist aber eigenartig. Ich hab mal ein Projekt gemacht, wo es mit SetBKMode funktioniert hat.
Jetzt hab ich aber das aber bei meinen Anhang von Vorgestern versucht und da hats auch net geklappt :gruebel:

dedeur 11. Mär 2004 14:06

Re: Auf ein Image schreiben
 
Hervorragend wär ich heute nicht mehr drauf gekommen.

Wollt jetzt mal versuchen den Text immer in der Mitte des Bitmaps auszugeben...

muß ich da mit Position := poScreenCenter;

arbeiten :?:


Gruß Patrick

Sanchez 11. Mär 2004 14:14

Re: Auf ein Image schreiben
 
Nö,
du musst doch einfach die Koordinaten beim TextOut anders setzen.
Einfach die Mitte vom Bild nehmen und die Text-Abmessungen abziehen.
Stichwort: Canvas.TextExtend

Die Position := poScreencenter lässt das Fenster immer in der Mitte des Screens auftauchen.

grüße, daniel

dedeur 11. Mär 2004 14:37

Re: Auf ein Image schreiben
 
Du meinst ich muss diese Zeile:

Code:
Image1.Picture.Bitmap.Canvas.TextOut(edText.Left - Image1.Left , edText.Top - Image1.Top, edText.Text,);
abändern?
Ich versteh das mit dem Canvas.TextExtent noch nicht so ganz :stupid:
was macht das den?

Ich hab jetzt vermutet ich muss hinter dem Left und Top genaue Koordinaten angeben...

Sanchez 11. Mär 2004 14:45

Re: Auf ein Image schreiben
 
Mit

Delphi-Quellcode:
  Image1.Picture.Bitmap.Canvas.TextOut(Image1.Width div 2 , Image1.Height div 2, edText.Text);
fängt der Text in der Mitte an.

TextExtent liefert dir die Abmessung des Strings. Die kannst du dann noch Abziehen.

Delphi-Quellcode:
  TextSize := Image1.Picture.Bitmap.Canvas.TextExtend(edText.Text);
  Image1.Picture.Bitmap.Canvas.TextOut((Image1.Width - TextSize.cx) div 2, (Image1.Height - TextSize.cy) div 2, edText.Text);
grüße, daniel

dedeur 11. Mär 2004 15:10

Re: Auf ein Image schreiben
 
Der
Code:
Image1.Picture.Bitmap.Canvas.TextOut(Image1.Width div 2 , Image1.Height div 2, edText.Text);
funzt super.

mit dem hab ich so meine Probleme

Code:
TextSize := Image1.Picture.Bitmap.Canvas.TextExtend(edText.Text);
    Image1.Picture.Bitmap.Canvas.TextOut((Image1.Width - TextSize.cx) div 2, (Image1.Height - TextSize.cy) div 2, edText.Text);
er gibt mir den Fehler
Delphi-Quellcode:
 [Fehler] Main.pas(81): Undefinierter Bezeichner: 'TextSize'
 [Fehler] Main.pas(81): Undefinierter Bezeichner: 'TextExtend'
 [Fehler] Main.pas(82): ')' erwartet, aber Bezeichner 'cx' gefunden
zurück.
hab versucht in der procedure eine Variable TextSIze angelgt als String... var TextSize : String;

der erste FEhler ist dann weg die andern bleiben bestehen.

Sanchez 11. Mär 2004 15:25

Re: Auf ein Image schreiben
 
Sorry mein Fehler.
Es heißt TextExtent und Textsize ist vom Type TSize.
Mit der OH (F1) hättest du das schneller rausgefunden.

grüße, daniel

Darklanmaster 7. Apr 2004 22:52

Re: Auf ein Image schreiben
 
ich hab auch noch ne frage!

ähhm ihr erzeugt ja so nur Bitmap Bilder. Gibs das auch für JPG bilder?
weil ich hab vor das bild per ftp ins internet hochzuladen. und BMP is mir zu groß.
Weiß jemand rat? :gruebel:

MFG
D@rklanmaster


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.
Seite 3 von 4     123 4      

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