来自TTnTEdit的Delphi字符串中的GDIPLUS [英] GDIPLUS in Delphi - string from TTnTEdit
本文介绍了来自TTnTEdit的Delphi字符串中的GDIPLUS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用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";",并返回"确定&q;"状态。
现在我更改DrawString(这是一个宽字符串参数)中的字符串,以接受来自我放置在画布上的TTnTEdit的输入。
thestring := TNTEdt1.Text;
r := graphics.DrawString(thestring , -1, font, pointF, solidBrush);
现在我没有打印任何内容,但仍返回OK。
我希望TTnTEdit实际返回宽字符串?
编辑:我要指出的是,TNTEdit包含什么内容并不重要,即使我输入了&Hello";。
推荐答案
如果您已经使用TNT Delphi Unicode控件,您还可以使用TntGraphics.pas在TCanvas
上输出,只需发出:
TntGraphics.WideCanvasTextOut( MyPaintBox.Canvas, x, y, MyTntEdit.Text );
既然您的问题提到了旋转文本,但您的代码没有尝试,所以请看一下this answer的方法DrawTextRotatedB()
并使用该方法。当然:将String
更改为Widestring
和ACanvas.TextOut(X, Y, AText)
到我的示例代码行。在D7上成功尝试了这一点,我非常确定它也会在D6上起作用:
这篇关于来自TTnTEdit的Delphi字符串中的GDIPLUS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文