str待输出的字符串的指针。 c待输出的字符。 说明:
该函数不会改变当前位置。 示例: //输出字符串
chars[]=\outtextxy(10,20,s); //输出字符 charc='A';
outtextxy(10,40,c);
//输出数值,先将数字格式化输出为字符串 chars[5];
sprintf(s,\outtextxy(10,60,s); 2.4.7setbkmode
这个函数用于设置输出文字时的背景模式。 voidsetbkmode(intiBkMode); 参数:iBkMode
指定输出文字时的背景模式,可以是以下值: 值 OPAQUE TRANSPARENT
描述
背景用当前背景色填充(默认)。
背景是透明的。
2.4.8setfont
这个函数用于设置当前字体样式。
voidsetfont(intnHeight,intnWidth,LPCTSTRlpszFace);
voidsetfont(intnHeight,intnWidth,LPCTSTRlpszFace,intnEscapement,intnOrientation,
intnWeight,boolbItalic,boolbUnderline,boolbStrikeOut);
voidsetfont(intnHeight,intnWidth,LPCTSTRlpszFace,intnEscapement,intnOrientation,
intnWeight,boolbItalic,boolbUnderline,boolbStrikeOut,
BYTEfbCharSet,BYTEfbOutPrecision,BYTEfbClipPrecision,BYTEfbQuality, BYTEfbPitchAndFamily);
voidsetfont(constLOGFONT*font);
参数:
nHeigh指定高度(逻辑单位)。
nWidth字符的平均宽度(逻辑单位)。如果为0,则比例自适应。 lpszFace字体名称。
nEscapement字符串的书写角度,单位0.1度。 nOrientation每个字符的书写角度,单位0.1度。
nWeight字符的笔画粗细,范围0~1000。0表示默认粗细。使用数字或下表中定义的宏均可:
宏 FW_DONTCARE
FW_THIN FW_EXTRALIGHT
FW_ULTRALIGHT
FW_LIGHT
00
300
4400
FW_MEDIUM
00 FW_SEMIBOLD
FW_DEMIBOLD
FW_BOLD FW_EXTRABOLD
FW_ULTRABOLD
粗细值
0 100
200
2
FW_NORMAL
00 FW_REGULAR
56
00
600
700
800
800
FW_HEAVY FW_BLACK
900
900
bItalic是否斜体,true/false。 bUnderline是否有下划线,true/false。 bStrikeOut是否有删除线,true/false。 fbCharSet\\指定字符集(详见LOGFONT结构体)。
fbOutPrecision指定文字的输出精度(详见LOGFONT结构体)。 fbClipPrecision指定文字的剪辑精度(详见LOGFONT结构体)。 fbQuality指定文字的输出质量(详见LOGFONT结构体)。
fbPitchAndFamily指定以常规方式描述字体的字体系列(详见LOGFONT结构体)。 font指向LOGFONT结构体的指针。 示例:
//设置当前字体为高16像素的“宋体”。 setfont(16,0,\宋体\outtextxy(0,0,\测试\//设置输出效果为抗锯齿 LOGFONTf;
getfont(&f);//获取当前字体设置 f.lfHeight=48;//设置字体高度为48
strcpy(f.lfFaceName,\黑体\设置字体为“黑体” f.lfQuality=ANTIALIASED_QUALITY;//设置输出效果为抗锯齿 setfont(&f);//设置字体样式 outtextxy(0,50,\抗锯齿效果\2.4.9textheight
这个函数用于获取字符串实际占用的像素高度。 inttextheight(LPCTSTRstr); inttextheight(TCHARc); 参数:
Str指定的字符串指针。 c指定的字符。 返回值:
该字符串实际占用的像素高度。 2.4.10textwidth
这个函数用于获取字符串实际占用的像素宽度。 inttextwidth(LPCTSTRstr); inttextwidth(TCHARc);
参数:
str指定的字符串指针。 c指定的字符。 返回值:
该字符串实际占用的像素宽度。 2.5图像处理相关函数 2.5.1相关函数和数据如下: 函数或数据 IMAGE loadimage saveimage getimage putimage GetWorkingImage
SetWorkingImage
Resize GetImageBuffer
GetImageHDC 2.5.1getimage
这个函数用于从当前绘图设备中获取图像。 //从当前绘图设备获取图像
voidgetimage(IMAGE*pDstImg,intsrcX,intsrcY,intsrcWidth,intsrcHeight); 参数:
pDstImg保存图像的IMAGE对象指针。 srcX要获取图像区域的左上角x坐标。 srcY要获取图像区域的左上角y坐标。 srcWidth要获取图像区域的宽度。 srcHeight要获取图像区域的高度。 示例:
请参考putimage函数示例。 2.5.2GetImageBuffer
这个函数用于获取绘图设备的显存指针。
描述
保存图像的对象。 读取图片文件。
保存绘图内容至图片文件。 从当前绘图设备中获取图像。 在当前绘图设备上绘制指定图像。
获取指向当前绘图设备的指针。
旋转IMAGE中的绘图内容。 设定当前绘图设备。 调整指定绘图设备的尺寸。 获取绘图设备的显存指针。 获取绘图设备句柄。
rotateimage
DWORD*GetImageBuffer(IMAGE*pImg=NULL); 参数:
pImg绘图设备指针。如果为NULL,表示默认的绘图窗口。 返回值:
返回绘图设备的显存指针。 说明:
获取到的显存指针可以直接读写。
在显存中,每个点占用4个字节,因此:显存的大小=宽度×高度×4(字节)。像素点在显存中按照从左到右、从上向下的顺序依次排列。访问显存请勿越界,否则会造成难以预料的后果。
显存中的每个点对应RGBTRIPLE类型的结构体:
structRGBTRIPLE{BYTErgbtBlue;BYTErgbtGreen;BYTErgbtRed;}
RGBTRIPLE在内存中的表示形式为:0xrrggbb(bb=蓝,gg=绿,rr=红),而常用的COLORREF在内存中的表示形式为:0xbbggrr。注意,两者的红色和蓝色是相反的,请用BGR宏交换红色和蓝色。
如果操作绘图窗口的显存,请在操作完毕后,执行FlushBatchDraw()使操作生效。 示例:
以下代码通过直接操作显存绘制渐变的蓝色: #include
//初始化绘图窗口 initgraph(640,480); //获取指向显存的指针
DWORD*pMem=GetImageBuffer(); //直接对显存赋值
for(inti=0;i<640*480;i++)
pMem[i]=BGR(RGB(0,0,i*256/(640*480)));
//使显存生效(注:操作指向IMAGE的显存不需要这条语句) FlushBatchDraw(); //按任意键退出 getch(); closegraph(); }
2.5.3GetImageHDC
这个函数用于获取绘图设备句柄(HDC)。 HDCGetImageHDC(IMAGE*pImg=NULL);