如何在编写图形程序时使用矢量字体,且能放大、缩小并能以任意角度显示?

guizhicheng 2000-07-19 10:56:00
我是一个C++BUILDER初学者,最近在编写一个图形程序时遇到一个疑难问题无法解决,就是在我的窗体上需要显示大量的数字,但C++BUILDER中提供的TextOut()函数只能水平输出字符串,而无法以任意角度输出。看了有关书籍介绍,改为调用Windows的API函数
GetObject()和CreateFontIndirect()虽能以任意角度输出字符串,但输出的字符很难看
而且难以辨认(我使用的字体是Font属性下所能显示的字体,如Arial等),另外尽管我的数据已全在内存中操作,但图形移动时显示和刷新的速度仍然非常慢,万般无奈之下,向诸位高手紧急求救(SOS),不知是否有更好的方法,恳请各位高手不吝赐教,给我一段小范例程序,以解小弟数日来夜不能寐之烦恼!感谢不尽!
我的地址:guizhicheng@china.com
桂志成
2000.07.19
...全文
246 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sephil 2001-05-11
  • 打赏
  • 举报
回复
旋转后的字体本来就很难看的
没办法
luhongjun 2001-05-11
  • 打赏
  • 举报
回复
春阳斑竹的方法难道不好用?
luhongjun 2001-05-10
  • 打赏
  • 举报
回复
如下这段可以在Form写出旋转90度的文字,你改一下就可以在你的图像上加上旋转了任意角度的文字,并可以放大缩小。
void __fastcall TForm1::FormPaint(TObject *Sender)
{
RECT rc;
::SetRect(&rc,0,0,ClientWidth,ClientHeight);
if(Focused())
{
Canvas->Pen->Color=GetSysColor(COLOR_INACTIVECAPTION);
Canvas->Brush->Color=GetSysColor(COLOR_INACTIVECAPTION);
}
else
{
Canvas->Pen->Color=GetSysColor(COLOR_ACTIVECAPTION);
Canvas->Brush->Color=GetSysColor(COLOR_ACTIVECAPTION);
}
Canvas->Rectangle(0,0,20,ClientHeight);

char* msg=Caption.c_str();
LOGFONT fontRec;
memset(&fontRec,0,sizeof(LOGFONT));
fontRec.lfHeight = -13;
fontRec.lfWeight = FW_NORMAL;
fontRec.lfEscapement = 900; // 旋转文字的关键
lstrcpy(fontRec.lfFaceName,"宋体");
HFONT hFont=CreateFontIndirect(&fontRec);
HFONT hOld=::SelectObject(Canvas->Handle,hFont);
::SetRect(&rc,0,0,20,ClientHeight);
::SetTextColor(Canvas->Handle,RGB(255,255,255));
::TextOut(Canvas->Handle,3,ClientHeight-3,msg,lstrlen(msg));
::SelectObject(Canvas->Handle,hOld);
::DeleteObject(hFont);
}
radish 2000-07-20
  • 打赏
  • 举报
回复
图形速度可以采用双图,在内存先画好

13,825

社区成员

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

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