基本屏幕绘图(GDI Graphics Device Interface 图像设备接口)
DC(Device Context)设备内容
在WM_PAINT消息之外的地方获得窗口的DC
HDC GetDC(HWND hWnd)
DC使用之后一定要释放掉,让其他应用程序可以获得
int ReleaseDC(HWND hWnd,HDC(释放DC的名称)) 成功返回1 ,失败返回0
画笔和画刷是GDI中所定义的图像对象,画笔是线条样式,画 刷是封闭的图像内部填充样式
自定义画笔或者画刷
HPEN CreatePen(int 样式,int 宽度,COLORREF 颜色)//建 立画笔
HBRUSH CreateHatchBrush(int 样式,COLORREF 颜色)//建立 阴影画刷
HBRUSH CreateSolidBrush(COLORREF 颜色)//建立单色画刷
必须在所要绘制的DC中选用建立的画笔或者画刷,才有效果
HGDIOBJ SelectObject(HDC hdc,HGDIOBJ GDI对象)
GDI对象占用内存一旦不使用,务必删除
BOOL DeleteObject(HGDIOBJ GDI对象);
GDI对象的使用基本过程
建立->选用->删除
GDI绘制函数
MoveToEx(HDC hdc,int x,int y,当前坐标(可以为ULL));
//移动起点
//画笔
LineTo(HDC hdc,int x,int y);//绘制线
//画刷
Rectangle(HDC hdc,x1,y1,x2,y2);//绘制矩形
矩形生成椭圆
BOOL Ellipse( HDC hdc,
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
)
生成圆角矩形
BOOL RoundRect(HDC HDC
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 圆角上椭圆长
int 圆角上椭圆高
)
最后生成扇形与弧形
//扇形
BOOL Pie(HDC hdc
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 起点x
int 起点y
int 终点x
int 终点y
)
//弧形
BOOL Chord(HDC hdc
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 起点x
int 起点y
int 终点x
int 终点y
)
GDI有了点的定义POINT 有x和y两个参数
Polygon(HDC hdc,点数组指针,包含的点数) //绘制封闭多 边形
绘制位图
从文件加载位图到绘制窗口
1.从文件中加载位图(BITMAP)对象
2.建立一个与窗口DC兼容内存DC
3.内存DC使用1所建立的位图对象
4.将内存DC的内容粘贴到窗口DC中,完成显像的操作
1.加载位图
HANDLE LoadImage(
HINSTANCE 来源实体(位图在资源文件中可以为 NULL)
LPCTSTR 名称(包括路径)
UINT 类型 (IMAGE_BITMAP.bmp
,IMAGE_CURSOR .cur,IMAGE_ICON .ico)
int 加载宽度
int 加载高度
UINT 加载方式(LR_LOADFROMFILE从文件加载)
)
2.建立兼容DC
HDC CreateCompatibleDC(HDC hdc)
注意:使用后也要删除
DeleteDC(HDC DC名称) 删除内存DC
3.内存DC选用位图对象
SelectObject()
4.贴图
BOOL BitBlt(
HDC 目的DC
int 目的DC x坐标
int 目的DC y坐标
int 贴到目的DC的宽度
int 贴到母的DC的高度
HDC 来源DC
int 来源DC x 坐标
int 来源DC y坐标
DWRD 贴图方式
)
2D游戏位图特效
透明效果
半透明效果
半透明图色彩=前景图色彩*不透明度+背景图色彩*(1-不透明 度)
1.取得位图的结构
int GetObject(HGDIOBJ GDId对象
int 结构的大小
LPVOID 结构变量
);
2,建立暂存数组
usigned char *px=new unsigned char [bm.bmHeight*bm.bmWidthBytes]
3.取得位图的位值
LONG GetBItmapBits(HBITMAP 位图
LONG 要取得的Byte数
LPVOID 储存的数组指针
)
如:
GetBitmaopBits(bitmap,bm.bmHeight*bm.bmWidthBytes,px)
4,处理颜色值
5,重设位图颜色
LONG SetBitmapBits(HBITMAP 位图
DWORD 颜色数组大小
CONST VOID 数组指针
)
透明半透明效果
先透明 在半透明
DC(Device Context)设备内容
在WM_PAINT消息之外的地方获得窗口的DC
HDC GetDC(HWND hWnd)
DC使用之后一定要释放掉,让其他应用程序可以获得
int ReleaseDC(HWND hWnd,HDC(释放DC的名称)) 成功返回1 ,失败返回0
画笔和画刷是GDI中所定义的图像对象,画笔是线条样式,画 刷是封闭的图像内部填充样式
自定义画笔或者画刷
HPEN CreatePen(int 样式,int 宽度,COLORREF 颜色)//建 立画笔
HBRUSH CreateHatchBrush(int 样式,COLORREF 颜色)//建立 阴影画刷
HBRUSH CreateSolidBrush(COLORREF 颜色)//建立单色画刷
必须在所要绘制的DC中选用建立的画笔或者画刷,才有效果
HGDIOBJ SelectObject(HDC hdc,HGDIOBJ GDI对象)
GDI对象占用内存一旦不使用,务必删除
BOOL DeleteObject(HGDIOBJ GDI对象);
GDI对象的使用基本过程
建立->选用->删除
GDI绘制函数
MoveToEx(HDC hdc,int x,int y,当前坐标(可以为ULL));
//移动起点
//画笔
LineTo(HDC hdc,int x,int y);//绘制线
//画刷
Rectangle(HDC hdc,x1,y1,x2,y2);//绘制矩形
矩形生成椭圆
BOOL Ellipse( HDC hdc,
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
)
生成圆角矩形
BOOL RoundRect(HDC HDC
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 圆角上椭圆长
int 圆角上椭圆高
)
最后生成扇形与弧形
//扇形
BOOL Pie(HDC hdc
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 起点x
int 起点y
int 终点x
int 终点y
)
//弧形
BOOL Chord(HDC hdc
int 外围矩形左上点x
int 外围矩形左上点y
int 外围矩形右下点x
int 外围矩形右下点y
int 起点x
int 起点y
int 终点x
int 终点y
)
GDI有了点的定义POINT 有x和y两个参数
Polygon(HDC hdc,点数组指针,包含的点数) //绘制封闭多 边形
绘制位图
从文件加载位图到绘制窗口
1.从文件中加载位图(BITMAP)对象
2.建立一个与窗口DC兼容内存DC
3.内存DC使用1所建立的位图对象
4.将内存DC的内容粘贴到窗口DC中,完成显像的操作
1.加载位图
HANDLE LoadImage(
HINSTANCE 来源实体(位图在资源文件中可以为 NULL)
LPCTSTR 名称(包括路径)
UINT 类型 (IMAGE_BITMAP.bmp
,IMAGE_CURSOR .cur,IMAGE_ICON .ico)
int 加载宽度
int 加载高度
UINT 加载方式(LR_LOADFROMFILE从文件加载)
)
2.建立兼容DC
HDC CreateCompatibleDC(HDC hdc)
注意:使用后也要删除
DeleteDC(HDC DC名称) 删除内存DC
3.内存DC选用位图对象
SelectObject()
4.贴图
BOOL BitBlt(
HDC 目的DC
int 目的DC x坐标
int 目的DC y坐标
int 贴到目的DC的宽度
int 贴到母的DC的高度
HDC 来源DC
int 来源DC x 坐标
int 来源DC y坐标
DWRD 贴图方式
)
2D游戏位图特效
透明效果
半透明效果
半透明图色彩=前景图色彩*不透明度+背景图色彩*(1-不透明 度)
1.取得位图的结构
int GetObject(HGDIOBJ GDId对象
int 结构的大小
LPVOID 结构变量
);
2,建立暂存数组
usigned char *px=new unsigned char [bm.bmHeight*bm.bmWidthBytes]
3.取得位图的位值
LONG GetBItmapBits(HBITMAP 位图
LONG 要取得的Byte数
LPVOID 储存的数组指针
)
如:
GetBitmaopBits(bitmap,bm.bmHeight*bm.bmWidthBytes,px)
4,处理颜色值
5,重设位图颜色
LONG SetBitmapBits(HBITMAP 位图
DWORD 颜色数组大小
CONST VOID 数组指针
)
透明半透明效果
先透明 在半透明