本博文由CSDN博主zuishikonghuan所作,版权归zuishikonghuan所有,转载请注明出处:http://blog.csdn.net/zuishikonghuan/article/details/47296351
在上几篇中,我们说到了通过GdipCreateFromHDC函数将HDC(设备上下文句柄)装换成GDI+的Graphics对象,讲到了画笔和画刷的使用,并演示了何利用GDI+Flat来画图片。这回我们来研究一下如何使用GDI+Flat来画文字
还是和以前一样,我们必须自己声明GDI+Flat函数,自己定义GDI+Flat的数据结构。自己动手,丰衣足食。~~
对于画图片,其实是GDI+调用的GDI+Flat的这几个函数:GdipSetTextRenderingHint、GdipSetSmoothingMode、GdipCreateFontFamilyFromName、GdipCreateStringFormat、GdipSetStringFormatAlign、GdipCreateFont、GdipDrawString、GdipDeleteFont、GdipDeleteFontFamily、GdipDeleteStringFormat以及需要上上篇中的画刷GdipCreateSolidFill、GdipCreateLineBrush和GdipDeleteBrush。
我们把这两个函数自己声明出来!不用那些GDI+类的东西!只用C和Win32的最基本的数据类型!
typedef struct _RectF{
float x;
float y;
float Width;
float Height;
}RectF;
extern "C" int WINAPI GdipSetTextRenderingHint(int graphics,int mode);
extern "C" int WINAPI GdipSetSmoothingMode(int graphics,int smoothingMode);
extern "C" int WINAPI GdipCreateFontFamilyFromName(WCHAR* name,int* fontCollection,int** fontFamily);
extern "C" int WINAPI GdipCreateStringFormat(int formatAttributes,short language,int** format);
extern "C" int WINAPI GdipSetStringFormatAlign(int* format,int align);
extern "C" int WINAPI GdipCreateFont(int* fontFamily,float emSize, int style, int unit, int** font);
extern "C" int WINAPI GdipDrawString(int graphics,WCHAR* string,int length,int* font,RectF* layoutRect,int* stringFormat,int* brush);
extern "C" int WINAPI GdipDeleteFont(int* font);
extern "C" int WINAPI GdipDeleteStringFormat(int* format);
extern "C" int WINAPI GdipDeleteFontFamily(int* fontFamily);
函数不少,来看看都是干嘛用的:
GdipSetTextRenderingHint:设置Graphics对象的文本渲染模式
参数1:Graphics对象
参数2:文本渲染模式(MSDN:https://msdn.microsoft.com/en-us/library/ms534404(v=vs.85).aspx)
{TextRenderingHintSystemDefault=0,TextRenderingHintSingleBitPerPixelGridFit=1,TextRenderingHintSingleBitPerPixel=2,TextRenderingHintAntiAliasGridFit=3,TextRenderingHintAntiAlias=4,TextRenderingHintClearTypeGridFit=5}(0:系统默认;2:最佳性能,但不保证效果;3:抗锯齿,但影响性能)
GdipSetSmoothingMode:设置Graphics对象的渲染质量
参数1:Graphics对象
参数2:平滑模式(MSDN:https://msdn.microsoft.com/en-us/library/ms534173(v=vs.85).aspx)
-1:无效,0:系统默认,1:最佳性能,2:最佳质量,3:不处理,4:抗锯齿
GdipCreateFontFamilyFromName:创建一个基于指定的字体系列的FontFamily对象
参数1&#