![]() |
Re: Bitmapgröße an Textgröße anpassen?
Delphi-Quellcode:
var
Bild: TBitmap; i,i2: Integer; breite: Integer; begin breite := 0; for i:= 0 to edt_text.Lines.Count-1 do begin If Length(edt_text.Lines.Strings[i]) > breite Then begin i2 := i; breite := Length(edt_text.Lines.Strings[i]); end; end; Bild := TBitmap.create; with Bild do begin Canvas.Font := edt_text.Font; Bild.Height := Canvas.TextHeight(edt_text.Text)*edt_text.Lines.Count; Bild.Width := Canvas.TextWidth(edt_text.Lines.Strings[i2]); transparentcolor := clWhite; transparent := true; for i:= 0 to edt_text.Lines.Count-1 do begin canvas.TextOut(0,Canvas.TextHeight(edt_text.Text)*i,edt_text.Lines.Strings[i]); end; end; Bild_img.Picture.Bitmap := Bild; Bild.Free; Nun habe ich das :) :) :) |
Re: Bitmapgröße an Textgröße anpassen?
Ja die Funktion mit der du die Breite ausrechnest ist zwar nötig aber nicht gut genug eigentlich.. Weil z.B was passiert wenn im Memo z.B vier Punkte in der ersten Reihe sind und drei 'W's in der zweiten?
Du musst da auch mit Canvas.TextWidth arbeiten.. Ich habs so probiert:
Delphi-Quellcode:
So müsste es besser gehn ;)
function GetLongesLineLength(AMemo: TMemo): Integer;
var i,temp: Integer; tempBmp: TBitmap; begin temp := 0; tempBmp := TBitmap.Create; tempBmp.Canvas.Font := AMemo.Font; for i:= 0 to AMemo.Lines.Count-1 do begin if tempBmp.Canvas.TextWidth(AMemo.Lines[i]) > temp then Temp := tempBmp.Canvas.TextWidth(AMemo.Lines[i]); end; TempBmp.Free; Result := Temp; end; Das ganze sieht dann bei mir so aus:
Delphi-Quellcode:
Gruß
procedure TForm1.Button1Click(Sender: TObject);
var B: TBitmap; i: Integer; begin B := TBitmap.Create; with B do begin Canvas.Font := Memo1.Font; Height := Canvas.TextHeight(Memo1.Lines[0]) * Memo1.Lines.Count; Width := GetLongesLineLength(Memo1); for i:= 0 to Memo1.Lines.Count-1 do begin Canvas.TextOut(0,i*Canvas.TextHeight(Memo1.Lines[0]),Memo1.Lines[i]); end; end; Canvas.Draw(0,0,B); B.Free; end; Neutral General |
Re: Bitmapgröße an Textgröße anpassen?
Zitat:
|
Re: Bitmapgröße an Textgröße anpassen?
ich nehme deine lösung.. dankeschön :)
|
Re: Bitmapgröße an Textgröße anpassen?
würde das aucht mit RTF funktioineren?
Mit Tab Taste :)....aber, das kommt später. |
Re: Bitmapgröße an Textgröße anpassen?
1. Ja aber mit der Textfarbe und so würde es dann halt komplizierter werden
2. Guck ma da oben rechts an deinem Beitrag ist ein Edit Button http://www.delphipraxis.net/template.../icon_edit.gif ;) |
Re: Bitmapgröße an Textgröße anpassen?
Hallo Karstadt,
hier ist eine andere Lösung:
Delphi-Quellcode:
Die Routine kannst du folgendermaßen nutzen:
procedure GetTextImage (aText: string; var aBitmap: TBitmap);
var R : TRect; begin with aBitmap.Canvas do begin SetRect(R, 0, 0, MaxInt, MaxInt); DrawText(Handle, PChar(aText), Length(aText), R, DT_CALCRECT); aBitmap.Width := R.Right - R.Left; aBitmap.Height := R.Bottom - R.Top; OffsetRect(R, -R.Left, -R.Top); DrawText(Handle, PChar(aText), Length(aText), R, 0); end; end;
Delphi-Quellcode:
Gruß Hawkeye
procedure Form1.Button1Click (Sender: TObject);
var BMP : TBitmap; begin BMP := TBitmap.Create; try BMP.Canvas.Font.Assign (RichEdit1.Font); GetTextImage (RichEdit1.Text, BMP); Self.Canvas.Draw (0, 0, BMP); finally BMP.Free; end; end; |
Re: Bitmapgröße an Textgröße anpassen?
Zitat:
|
Re: Bitmapgröße an Textgröße anpassen?
Hallo Karstadt,
Zitat:
Gruß Hawkeye |
Re: Bitmapgröße an Textgröße anpassen?
das mit RFT ist schade.. nun ist das problem.. , das ich mit TAB Tasten arbeiten will. das funktioniert abernicht. dort wird immer ein "anderes" Zeichen dartegestllt. Gibt es hier für auch eine lösung?
MFG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16: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