![]() |
GDI+ wie Schriftgröße bei DrawText verändern?
Hallo,
mein Problem ist eigentlich recht simpel. :-D Ich möchte eine Vektorgrafik beschriften, aber die Schriftgröße lässt sich nicht beeinflussen, sodass der Text abgeschnitten wird. :gruebel: Im nachfolgenden Code habe ich versucht das Problem übersichtlich zu rekonstruieren. Wie in meinem Programm wird auf eine Image-Komponente gezeichnet. Die interne Auflösung der Grafik (Window) ist 10x größer als die des Viewports bzw. Image-Clientbereichs. Wenn die Zeile "Image1.Canvas.Font.Height:=1" auskommentiert wird, dann erscheint der Text sehr klein, was durch die höhere interne Auflösung des Bildes entsteht (logisch). Befindet sich die Zeile "Image1.Canvas.Font.Height:=1" jedoch im Quellcode, dann wird der Text skaliert. Scheinbar spielt es aber keine Rolle, welcher Wert für "Height" eingegeben wird. Die Textgröße ist immer identisch. :shock: Die Eigenschaft "Canvas.Font.Size" verhält sich genauso. Würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte. :thumb:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var dc:HDC; MyRect:TRect; pstr:PChar; begin dc:=Image1.Canvas.Handle; SetMapMode(dc,MM_ISOTROPIC); SetWindowExtEx(dc,Image1.Clientwidth*10,Image1.Clientheight*10,nil); SetViewportExtEx(dc,Image1.Clientwidth,Image1.Clientheight,nil); // Clientwidth=600, Clientheight=600 //Beschriftung MyRect:=Rect(10,10,200,200); //Abmessung bezieht sich auf Window! Nicht Viewport! pstr:='Test'; //Irgentein Text Image1.Canvas.Font.Height:=1; //Wenn auskommentiert Schrift sehr klein, Wert hat jedoch keinen Einfluss auf Schriftgröße DrawText(dc, pstr, length(pstr),MyRect,DT_Top); end; |
AW: GDI+ wie Schriftgröße bei DrawText verändern?
Zitat:
Zum Thema! Kann nirgends erkennen wo du GDI+ verwendest. DrawText hat nichts mit GDI+ zu tun. Oder? gruss |
AW: GDI+ wie Schriftgröße bei DrawText verändern?
Zitat:
Zitat:
|
AW: GDI+ wie Schriftgröße bei DrawText verändern?
Zitat:
Ob DrawText das wahre ist mag dahin gestellt sein. Hab mal ein Beispiel angehängt. Allerdings ändert dieses Beispiel auch nicht den Font-Size sondern skaliert diesen nur. Wenn du den Font-Size ändern willst würde ich eher zu CreateFont/CreateFontIndirect und TextOut tendieren. gruss |
AW: GDI+ wie Schriftgröße bei DrawText verändern?
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, danke. Dein erstes Beispiel hat mich schon auf den richtigen Weg gebracht. Mein Programm ist allerdings sehr langsam geworden, nachdem der Text hinzugefügt wurde.
Werde dann mal TextOut probieren :thumb: Edit: Hab das Programm nun mit TextOut realisiert und es ist wesentlich schneller geworden.
Delphi-Quellcode:
var myFont:HFONT;RectStr:TRect; dc:HDC;
//... myFont := CreateFont(RectStr.Height, 0, 0, 0, 0, 0, 0, 0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,DEFAULT_PITCH,'Arial'); OldFont:=SelectObject(dc,MyFont); ExtTextOut(dc,RectStr.Left,RectStr.Top,ETO_CLIPPED,RectStr,pstr,Length(pstr),nil); SelectObject(dc,OldFont); DeleteObject(MyFont); //... ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 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