来自TTnTEdit的Delphi字符串中的GDIPLUS [英] GDIPLUS in Delphi - string from TTnTEdit

查看:22
本文介绍了来自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.pasTCanvas上输出,只需发出:

TntGraphics.WideCanvasTextOut( MyPaintBox.Canvas, x, y, MyTntEdit.Text );

既然您的问题提到了旋转文本,但您的代码没有尝试,所以请看一下this answer的方法DrawTextRotatedB()并使用该方法。当然:将String更改为WidestringACanvas.TextOut(X, Y, AText)到我的示例代码行。在D7上成功尝试了这一点,我非常确定它也会在D6上起作用:

这篇关于来自TTnTEdit的Delphi字符串中的GDIPLUS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆