曲靖师范学院物电学院电子设计创新实验室WINCE程序开发教学第七讲主讲:夏文智本节内容文本输出函数输出设置函数自定义字体位图对象的创建位图对象的显示文本的输出函数intDrawText(HDChDC,//handletoDC(表示设备环境)LPCTSTRlpString,//texttodraw(被输出的字符串指针)intnCount,//textlength(字符串中的字符数)LPRECTlpRect,//formattingdimensions(文本显示矩形区域)UINTuFormat//text-drawingoptions(文本的显示方法));文本输出设置1、设置文本的背景颜色COLORREFSetBkColor(HDChdc,//handletoDCCOLORREFcrColor//backgroundcolorvalue);2、设置文本的颜色COLORREFSetTextColor(HDChdc,//handletoDCCOLORREFcrColor//textcolor);3、文本的对齐方式UINTSetTextAlign(HDChdc,//handletoDCUINTfMode//text-alignmentoption);4、SetBkMode(hdc,FALSE);//设置字体颜色不起作用注意:以上函数都要在绘制文本之前使用,否则无效。WINCE的字体1、系统默认的字体有两种:光栅型(raster)和TrueType型。2、自定义字体类型HFONTCreateFontIndirect(constLOGFONT*lplf);创建字体选入设备环境使用字体删除字体操作位图的基本步骤创建位图句柄加载位图对象创建内存设备描述对象,将位图选入内存设备描述对象使用位图函数进行图形绘制删除位图句柄创建位图句柄并加载位图对象位图句柄HBITMAPhBmp;HBITMAPLoadBitmap(HINSTANCEhInstance,LPCTSTRlpBitmapName);使用方法:HBITMAPhBmp=LoadBitmap(g_hInst,MAKEINTRESOURCE(IDB_BITMAP1));位图资源有两种:系统内置资源应用程序位图资源创建位图句柄并加载位图对象HBITMAPCreateBitmap(intnWidth,//指定位图的宽度intnHeight,//指定位图的高度UINTcPlanes,//该设备使用的颜色位数目,在CE环境中为1UINTcBitsPerPel,//指定每个像素所用的为数,一般为2的n次方CONSTVOID*lpvBits//指向颜色数据数组指针);创建位图句柄并加载位图对象01010001011101110001=5177100001010111011101110101=5777500000010011011101110101=1377500001010111011101110101=5777500001010001000100010001=51111000hBmp=CreateBitmap(20,5,1,4,bits);创建位图句柄并加载位图对象HBITMAPSHLoadDIBitmap(LPCTSTRszFileName);位图显示步骤创建内存设备环境将位图选入内存设备环境调用传送函数在设备上显示位图内存设备环境内存设备环境的作用提高存储速度,并且使位图的设备环境和设备环境设置进行匹配。WindowsCE首先将位图装入到内存设备环境中,然后从内存中复制到设备环境中。HDCCreateCompatibleDC(HDChdc);参数hdc一般情况下给NULL位图选入设备对象使用。SelectObject()函数。传送数据块的函数(第一种块传输方式)BOOLBitBlt(HDChdcDest,//目标设备环境的句柄intnXDest,//目标矩形区域左上角的逻辑坐标intnYDest,intnWidth,//目标矩形区域的宽度和高度intnHeight,HDChdcSrc,//源绘图环境的句柄intnXSrc,//源位图左上角的逻辑坐标intnYSrc,DWORDdwRop//设定要执行的光栅操作代码);SRCCOPY将源位图拷贝到目标位图(传输方法)实例:BitBlt(hdc,0,0,rect.right,rect.bottom,hdcmen,0,0,SRCCOPY);传送数据块的函数(第二种拉伸传输方式)BOOLStretchBlt(HDChdcDest,intnXOriginDest,intnYOriginDest,intnWidthDest,intnHeightDest,HDChdcSrc,intnXOriginSrc,intnYOriginSrc,intnWidthSrc,//多了源位图宽度参数intnHeightSrc,//多了源位图高度参数DWORDdwRop);传送数据块的函数(第二种拉伸传输方式)要知道位图有多大,可先定义个BITMAPbmp变量,后使用以下方法获得BITMAPbmp;GetObject(hBmp,sizeof(bmp),&bmp);……StretchBlt(hdc,0,0,rect.right,rect.bottom,hdcmen,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);传送数据块的函数(第三种透视传输方式)BOOLTransparentBlt(HDChdcDest,intnXOriginDest,intnYOriginDest,intnWidthDest,inthHeightDest,HDChdcSrc,intnXOriginSrc,intnYOriginSrc,intnWidthSrc,intnHeightSrc,UINTcrTransparent);最后一个参数是是个颜色值