高分求教:truetype字库的使用问题

pqx2002 2003-07-17 02:09:01
如何从truetype字库中查找到字符的矢量信息(轮廓?和内部填充的直线信息) ,例如“A”,然后利用画图(直线)的办法将其显示在画布(Canvas)上呢?
凡是提供有用信息和例子的大哥,一定给分。
...全文
40 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2003-08-19
  • 打赏
  • 举报
回复
还有一贴,你也可看看
http://expert.csdn.net/Expert/topic/2098/2098463.xml?temp=.3817255
我很奇怪,你与atulss (阿土) 会提同样的问题
柯本 2003-08-19
  • 打赏
  • 举报
回复
完全同样的问题,我已经回答:
http://expert.csdn.net/Expert/topic/2111/2111154.xml?temp=.5483667
csdnxw 2003-08-19
  • 打赏
  • 举报
回复
判断闭合图形的左右坐标,然后划线,试试吧
atulss 2003-08-19
  • 打赏
  • 举报
回复
up
pqx2002 2003-08-19
  • 打赏
  • 举报
回复
我的问题已经解决,就是抛弃一切幻想,采用扫描线算法,对所有边进行扫描,求出交点,然后再处理一番,最后得到所有的填充数据。哎,靠天靠地不如靠自己啊!
pqx2002 2003-08-04
  • 打赏
  • 举报
回复
UP
pqx2002 2003-08-01
  • 打赏
  • 举报
回复
UP
atulss 2003-08-01
  • 打赏
  • 举报
回复
楼主有好办法可要告诉我一声,我也在解决这类问题
atulss 2003-08-01
  • 打赏
  • 举报
回复
up
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
UP
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
重申:我需要的是填充算法,不是某个函数的用法,我不是要把它输出到屏幕或打印机上,而是只能画直线的激光设备,我需要控制激光设备一条线一条线的把图形画出来。
我来看看CB 2003-07-31
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Canvas->TextOut(Button1->Left+40,Button1->Top+140,"空心字");
Canvas->Font = Font;
Canvas->Brush->Color = clBlue;
Canvas->Brush->Style = bsSolid;

SIZE StrExt = Canvas->TextExtent("描边汉字");

int x,y;

x=Button1->Left+40;
y=Button1->Top+40;

BeginPath(Canvas->Handle);
Canvas->TextOut(x,y,"描边汉字");
EndPath(Canvas->Handle);

HRGN hrgnStr = PathToRegion(Canvas->Handle);
HRGN hrgnBound = CreateRectRgn(x,y,x+StrExt.cx,y+StrExt.cy);
CombineRgn(hrgnStr,hrgnBound,hrgnStr,RGN_DIFF);
// FrameRgn(Canvas->Handle,hrgnStr,Canvas->Brush->Handle,1,1);
// FrameRgn(Canvas->Handle,hrgnStr,Canvas->Brush->Handle,2,2);

// Image1->Canvas->Brush->Color=clRed;
Image1->Canvas->Brush->Color=clRed;
FillRgn(Canvas->Handle,hrgnStr,Image1->Canvas->Brush->Handle);
Canvas->Brush->Color=clYellow;
FrameRgn(Canvas->Handle,hrgnStr,Canvas->Brush->Handle,1,1);
}
yesry 2003-07-31
  • 打赏
  • 举报
回复
up
bluebohe 2003-07-31
  • 打赏
  • 举报
回复
首先设置绘图模式
SetBkMode (hdc, TRANSPARENT) ;
然后,设置绘图路径

BeginPath (hdc) ;
中间添加你绘制的文字轮廓,注意文字轮廓一定是闭合的
MoveTo(……);
LineTo(……);
结束绘图路径
EndPath (hdc) ;
最后,填充绘图路径
FillPath (hdc) ;



我想就这样的
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
UP
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
能否提供 FillRgn 函数的实现细节,即这个函数填充多边形的原理、过程?
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
UP
pqx2002 2003-07-31
  • 打赏
  • 举报
回复
bluebohe(薄荷) :
没有什么绘图语言,只能通过向端口发送指令来控制激光器的移动。
bluebohe 2003-07-31
  • 打赏
  • 举报
回复
你的激光设备的绘图语言是什么?
ybluo 2003-07-30
  • 打赏
  • 举报
回复
Programming Windows, Fifth Edition 有一章是关于字体的
加载更多回复(5)

13,874

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧