强大的文字输出 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+文本输出
|
|