error2---BeginPath和EndPath之间的TextOut无法显示

it2022-05-09  31

并不是所有字体,由TextOut函数输出都能形成路径, 通常像宋体、楷体_GB2312等TrueType类型的字体才可以, 有一个简单的判断方法,当你打开字体选择对话框时,只有字体 前有T符号标记的,才是TrueType字体,当然在CFontDialog中可以 指定只显示TrueType字体! 所以以下代码经测试通过! void CTextView::OnDraw(CDC* /*pDC*/){    CTextDoc* pDoc = GetDocument();    ASSERT_VALID(pDoc);    if (!pDoc)        return;    // TODO: 在此处为本机数据添加绘制代码    CClientDC dc(this);    CString zec;    zec.LoadStringW(IDS_STRINGzec01);    CSize cs = dc.GetTextExtent(zec);    CRect rect;    rect.left = 0;    rect.top = 50;    rect.right = 50 + cs.cx;    rect.bottom = 50 + cs.cy;    dc.TextOut(0,50,zec);    dc.BeginPath();    dc.Rectangle(0,50,cs.cx,50+cs.cy);         //划定一个区域作为剪切区域    dc.EndPath();    dc.SelectClipPath(RGN_DIFF);    for (int i=0;i<100;i++)    {        dc.MoveTo(0,i*5);        dc.LineTo(500,i*5);    }    for (int j=0;j<100;j++)    {        dc.MoveTo(j*5,0);        dc.LineTo(j*5,600);    }}

转载于:https://www.cnblogs.com/forlina/archive/2011/08/02/2124607.html

相关资源:数据结构—成绩单生成器

最新回复(0)