Delphi 中的 GDIPLUS - 来自 TTnTEdit 的字符串
GDIPLUS in Delphi - string from TTnTEdit
我正在尝试使用 Delphi 将阿拉伯语中的旋转文本绘制到绘画盒中 6. 尝试了不同的工具,例如 GR32,现在尝试了 GDIPLUS。
GDIPLUS 示例工作正常,我可以绘制“Hello”:
graphics := TGPGraphics.Create(PaintBox.Canvas.Handle);
fontFamily:= TGPFontFamily.Create('Times New Roman');
font := TGPFont.Create(fontFamily, 24, FontStyleRegular, UnitPixel);
pointF := MakePoint(30.0, 10.0);
solidBrush:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255));
r := graphics.DrawString('Hello', -1, font, pointF, solidBrush);
showmessage( GetEnumName(
typeinfo(Tstatus), ord(r) )
);
fontFamily.Free;
font.Free;
solidBrush.Free;
graphics.Free;
当 运行 时,我在 Paintbox 中按预期绘制了“Hello”,并恢复了“OK”状态。
现在我更改 DrawString 中的字符串(这是一个宽字符串参数)以接受来自我放在 canvas.
上的 TTnTEdit 的输入
thestring := TNTEdt1.Text;
r := graphics.DrawString(thestring , -1, font, pointF, solidBrush);
现在我没有打印任何东西,但仍然正常 returned。
我希望 TTnTEdit 实际上 return 宽字符串 ?
编辑:我应该指出,TNTEdit 有什么内容并不重要,即使我输入“你好”也是如此。
如果您已经使用 Tnt Delphi Unicode Controls,您还可以使用 TntGraphics.pas for Widestring
在 TCanvas
上输出,只需发出:
TntGraphics.WideCanvasTextOut( MyPaintBox.Canvas, x, y, MyTntEdit.Text );
由于您的问题提到了旋转文本,但您的代码无处尝试,因此请查看 this answer 的方法 DrawTextRotatedB()
并使用该方法。当然:将 String
更改为 Widestring
并将 ACanvas.TextOut(X, Y, AText)
更改为我的示例代码行。使用 D7 成功地尝试了这个,我很确定它也适用于 D6:
我正在尝试使用 Delphi 将阿拉伯语中的旋转文本绘制到绘画盒中 6. 尝试了不同的工具,例如 GR32,现在尝试了 GDIPLUS。
GDIPLUS 示例工作正常,我可以绘制“Hello”:
graphics := TGPGraphics.Create(PaintBox.Canvas.Handle);
fontFamily:= TGPFontFamily.Create('Times New Roman');
font := TGPFont.Create(fontFamily, 24, FontStyleRegular, UnitPixel);
pointF := MakePoint(30.0, 10.0);
solidBrush:= TGPSolidBrush.Create(MakeColor(255, 0, 0, 255));
r := graphics.DrawString('Hello', -1, font, pointF, solidBrush);
showmessage( GetEnumName(
typeinfo(Tstatus), ord(r) )
);
fontFamily.Free;
font.Free;
solidBrush.Free;
graphics.Free;
当 运行 时,我在 Paintbox 中按预期绘制了“Hello”,并恢复了“OK”状态。
现在我更改 DrawString 中的字符串(这是一个宽字符串参数)以接受来自我放在 canvas.
上的 TTnTEdit 的输入 thestring := TNTEdt1.Text;
r := graphics.DrawString(thestring , -1, font, pointF, solidBrush);
现在我没有打印任何东西,但仍然正常 returned。
我希望 TTnTEdit 实际上 return 宽字符串 ?
编辑:我应该指出,TNTEdit 有什么内容并不重要,即使我输入“你好”也是如此。
如果您已经使用 Tnt Delphi Unicode Controls,您还可以使用 TntGraphics.pas for Widestring
在 TCanvas
上输出,只需发出:
TntGraphics.WideCanvasTextOut( MyPaintBox.Canvas, x, y, MyTntEdit.Text );
由于您的问题提到了旋转文本,但您的代码无处尝试,因此请查看 this answer 的方法 DrawTextRotatedB()
并使用该方法。当然:将 String
更改为 Widestring
并将 ACanvas.TextOut(X, Y, AText)
更改为我的示例代码行。使用 D7 成功地尝试了这个,我很确定它也适用于 D6: