关于特定度数的旋转打印!!(100)

  • 主题发起人 主题发起人 dzl19
  • 开始时间 开始时间
D

dzl19

Unregistered / Unconfirmed
GUEST, unregistred user!
Printer.Canvas.TextOut(20,20,'内容');正的横向打印。能不能写个过程,实现单个或多个汉字组合体同时旋转特定的度数打印出来,这个度数是变化的。如:Printer.CanvasX.TextOut(20,20,'内容',15);表示整个“内容”向右转15度,就像打印圆形印章里的单个汉字一样旋转。请高手帮忙 !谢谢!
 
这个问题有3个笨的解决方案:1、选择字库,windows输出的时候是从字库取出字体的点阵排列的,你需要先改变它。 这个方向,我们做的时候证明的确可行,可惜麻烦。2、 在内存中创建一个bitmap, textOut你的文字, 然后写一个bitmap的旋转函数,将bmp旋转合适的角度, 将bitmap用GDI函数copyRect/copyrectEx--看你的GDI版本了--粘贴到打印机的canvas上。 打印输出。。。 3、这是一个所见即所得的打印方案,基本原理和2一样。我们项目里是打印编辑器。 A 首先创建一个panel,创建一个Timage,充满panel,这个Timage--叫基色层。 B 然后创建另一个Timage--图层1,textout,brush,copyrect你所需要的图像,文字。 用户拖到合适的位置,放大缩小,旋转。。。 C 然后创建下一个图层2,循环。。。 D 打印的时候从基色层开始copyRect到打印机的canvas上即可,我们用Tlist维护这个顺序 (记得处理分辨率)。 很早以前写的东西了,代码忘了扔哪里了,要不用代码你会更清楚点。。
 
API: LOGFONTA font;
font.lfEscapement = -900;
// 这个就是控制字体旋转的 HFONT f = CreateFontIndirect(&font);
 
关键问题在于,怎样在Timage的canvas上可视出印章样子的字体旋转,看满意了就再同样发送到打印机。比如,在坐标(20,20)地方,打印“内容”,向右旋转60度或75度,度数和坐标职位参数传入。谁能提供这样的两个功能的例子呢?
 

Similar threads

回复
0
查看
863
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部