Hallo,
mein Problem ist eigentlich recht simpel.
Ich möchte eine Vektorgrafik beschriften, aber die Schriftgröße lässt sich nicht beeinflussen, sodass der Text abgeschnitten wird.
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.
Die Eigenschaft "Canvas.Font.Size" verhält sich genauso. Würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte.
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;