参数:
pImg绘图设备指针。如果为NULL,表示默认的绘图窗口。 返回值:
返回绘图设备句柄(HDC)。 说明:
获取到的HDC句柄可以用在WindowsGDI函数中。
每个IMAGE对象都有一个HDC句柄,可以通过HDC句柄实现对该IMAGE的GDI函数操作。在同一个IMAGE设备中,请勿混用EasyX绘图函数和GDI绘图函数。
如果获取默认绘图窗口的HDC句柄,那么执行GDI函数后并不会直接显示到屏幕上,请执行FlushBatchDraw()显示之前的GDI操作效果。
示例:
#include
//初始化绘图窗口 initgraph(640,480);
//获取默认绘图窗口的HDC句柄 HDChdc=GetImageHDC(); //执行WindowsGDI绘图函数 MoveToEx(hdc,10,10,NULL); LineTo(hdc,100,100);
//使之前的WindowsGDI绘图生效 FlushBatchDraw();
//创建大小为200x200的img对象 IMAGEimg(200,200); //获取该img对象的HDC句柄 hdc=GetImageHDC(&img); //执行WindowsGDI绘图函数 Ellipse(hdc,0,50,199,150); //将img对象显示到绘图窗口上面 putimage(100,0,&img); //按任意键退出 getch(); closegraph(); }
2.5.4GetWorkingImage
这个函数用于获取当前的绘图设备。
IMAGE*GetWorkingImage(); 返回值:
返回指向当前绘图设备的指针。如果返回值为NULL,表示当前绘图设备为绘图窗口。 2.5.5IMAGE 保存图像的对象。
classIMAGE(intwidth=0,intheight=0); 成员: (隐藏)
由于EasyX库面向初学者,所以尽力隐藏了面向对象的内容。 示例:以下语句可以创建一个名为img的IMAGE对象: IMAGEimg;
更多示例请参考putimage函数示例。 2.5.6loadimage
这个函数用于从文件中读取图像。
//从图片文件获取图像(bmp/jpg/gif/emf/wmf/ico) voidloadimage(
IMAGE*pDstImg,//保存图像的IMAGE对象指针 LPCTSTRpImgFile,//图片文件名 intnWidth=0,//图片的拉伸宽度 intnHeight=0,//图片的拉伸高度
boolbResize=false//是否调整IMAGE的大小以适应图片 );
//从资源文件获取图像(bmp/jpg/gif/emf/wmf/ico) voidloadimage(
IMAGE*pDstImg,//保存图像的IMAGE对象指针 LPCTSTRpResType,//资源类型 LPCTSTRpResName,//资源名称 intnWidth=0,//图片的拉伸宽度 intnHeight=0,//图片的拉伸高度
boolbResize=false//是否调整IMAGE的大小以适应图片 ); 参数: pDstImg
保存图像的IMAGE对象指针。如果为NULL,表示图片将读取至绘图窗口。 pImgFile
图片文件名。支持bmp/jpg/gif/emf/wmf/ico类型的图片。gif类型的图片仅加载第一帧,不支持透明。
nWidth
图片的拉伸宽度。加载图片后,会拉伸至该宽度。对于矢量图片十分有用。 nHeight
图片的拉伸高度。加载图片后,会拉伸至该高度。对于矢量图片十分有用。 bResize
是否调整IMAGE的大小以适应图片。 pResType 图片资源类型。 pResName 图片资源名称。 说明:
如果创建IMAGE对象的时候没有指定宽高,可以通过Resize函数设置。
对于没有设置宽高的IMAGE对象,执行loadimage会将其宽高设置为和读取的图片一样的尺寸。
示例:
以下范例加载图片“D:\\test.jpg”至绘图窗口: #include
//绘图环境初始化 initgraph(640,480); //读取图片至绘图窗口
loadimage(NULL,\//按任意键退出 getch(); closegraph(); }
2.5.7putimage
这个函数的几个重载用于在当前设备上绘制指定图像。 //绘制图像 voidputimage(
intdstX,//绘制位置的x坐标 intdstY,//绘制位置的y坐标
IMAGE*pSrcImg,//要绘制的IMAGE对象指针
DWORDdwRop=SRCCOPY//三元光栅操作码(详见备注) );
//绘制图像(指定宽高和起始位置)
voidputimage(
intdstX,//绘制位置的x坐标 intdstY,//绘制位置的y坐标 intdstWidth,//绘制的宽度 intdstHeight,//绘制的高度
IMAGE*pSrcImg,//要绘制的IMAGE对象指针
intsrcX,//绘制内容在IMAGE对象中的左上角x坐标 intsrcY,//绘制内容在IMAGE对象中的左上角y坐标 DWORDdwRop=SRCCOPY//三元光栅操作码(详见备注) ); 参数:
(详见各重载函数原型内的注释) 备注:
三元光栅操作码(即位操作模式),支持全部的256种三元光栅操作码,常用的几种如下:
值 DSTINVERT
MERGECOPY
MERGEPAINT
NOTSRCCOPY
NOTSRCERASE
PATCOPY PATINVERT
PATPAINT
SRCAND SRCCOPY SRCERASE
SRCINVERT
含义
绘制出的像素颜色=NOT屏幕颜色
绘制出的像素颜色=图像颜色AND当前填充颜色 绘制出的像素颜色=屏幕颜色OR(NOT图像颜色) 绘制出的像素颜色=NOT图像颜色
绘制出的像素颜色=NOT(屏幕颜色OR图像颜色) 绘制出的像素颜色=当前填充颜色
绘制出的像素颜色=屏幕颜色XOR当前填充颜色
绘制出的像素颜色=屏幕颜色OR((NOT图像颜色)OR当前填充颜色)
绘制出的像素颜色=屏幕颜色AND图像颜色 绘制出的像素颜色=图像颜色
绘制出的像素颜色=(NOT屏幕颜色)AND图像颜色 绘制出的像素颜色=屏幕颜色XOR图像颜色
SRCPAINT
注:
绘制出的像素颜色=屏幕颜色OR图像颜色
1.AND/OR/NOT/XOR为布尔运算。
2.\屏幕颜色\指绘制所经过的屏幕像素点的颜色。 3.\图像颜色\是指通过IMAGE对象中的图像的颜色。
4.\当前填充颜色\是指通过setfillstyle设置的用于当前填充的颜色。 5.查看全部的三元光栅操作码请点这里:三元光栅操作码。
示例:
以下局部代码将屏幕(0,0)起始的100x100的图像拷贝至(200,200)位置: IMAGEimg;
getimage(&img,0,0,100,100); putimage(200,200,&img); 2.5.8Resize
这个函数用于调整指定绘图设备的尺寸。 voidResize(IMAGE*pImg,intwidth,intheight); 参数:
pImg指定要调整尺寸的绘图设备。如果为NULL,则表示默认绘图窗口。 width指定绘图设备的宽度。 height指定绘图设备的高度。 2.5.9rotateimage
这个函数用于旋转IMAGE中的绘图内容。
voidrotateimage(IMAGE*dstimg,IMAGE*srcimg,doubleradian,
COLORREFbkcolor=BLACK,boolautosize=false,boolhighquality=true); 参数:
dstimg指定目标IMAGE对象指针,用来保存旋转后的图像。 srcimg指定原IMAGE对象指针。 radian指定旋转的弧度。
bkcolor指定旋转后产生的空白区域的颜色。默认为黑色。
autosize指定目标IMAGE对象是否自动调整尺寸以完全容纳旋转后的图像。默认为false。
srcimg指定是否采用高质量的旋转。在追求性能的场合请使用低质量旋转。默认为true。 示例:
以下示例加载图片\并旋转30度(PI/6),然后显示在左上角: #include