分享

Windows GDI和GDI+编程实例剖析 (7)

 伤心莫哭 2010-11-07
 强大的文字输出

  GDI+拥有极其强大的文字输出处理能力,输出文字的颜色、字体、填充方式都可以直接作为Graphics类DrawString成员函数的参数进行设置,其功能远胜过GDI设备上下文的TextOut函数。

void CGdiexampleDlg::OnText()
{
 // TODO: Add your command handler code here
 CClientDC dc(this);
 //创建Graphics对象
 Graphics graphics(dc);
 //创建20号"楷体"字体
 FontFamily fontFamily1(L "楷体_GB2312"); // 定义"楷体"字样
 Font font1(&fontFamily1, 20, FontStyleRegular, UnitPoint);
 //定义输出UNICODE字符串
 WCHAR string[256];
 wcscpy(string, L "天极网的读者朋友,您好!");
 //以蓝色画刷和20号"楷体"显示字符串
 graphics.DrawString(string, (INT)wcslen(string), &font1, PointF(30, 10),&SolidBrush(Color::Blue));
 //定义字符串显示画刷
 LinearGradientBrush linGrBrush(Point(30, 50), Point(100, 50), Color(255, 255,0, 0), Color(255, 0, 0, 255));
 //以线性渐变画刷和创建的20号"楷体"显示字符串
 graphics.DrawString(string, (INT)wcslen(string), &font1, PointF(30, 50),&linGrBrush);
 //创建20号"华文行楷"字体
 FontFamily fontFamily2(L "华文行楷"); // 定义"楷体"字样
 Font font2(&fontFamily2, 20, FontStyleRegular, UnitPoint);
 //以线性渐变画刷和20号"华文行楷"显示字符串
 graphics.DrawString(string, (INT)wcslen(string), &font2, PointF(30, 90),&linGrBrush);
 //以图像创建画刷
 Image image(L "d:\\3.jpg");
 TextureBrush tBrush(&image);
 //以图像画刷和20号"华文行楷"显示字符串
 graphics.DrawString(string, (INT)wcslen(string), &font2, PointF(30, 130),&tBrush);
 //创建25号"华文中宋"字体
 FontFamily fontFamily3(L "华文中宋"); // 定义"楷体"字样
 Font font3(&fontFamily2, 25, FontStyleRegular, UnitPoint);
 //以图像画刷和20号"华文行楷"显示字符串
 graphics.DrawString(string, (INT)wcslen(string), &font3, PointF(30, 170),&tBrush);
}

  上述代码的执行效果如图10所示,字体、颜色和填充都很丰富!


图10 GDI+文本输出

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约