WINDOW API基本屏幕绘图(GDI Graphics Device Interface 图像设备接口)

原创 2013年12月05日 13:40:36
基本屏幕绘图(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 数组指针
)
透明半透明效果
      先透明 在半透明

相关文章推荐

Windows图形设备接口及Windows绘图

Windows图形设备及接口(GDI)是为与设备无关的图形设计的。设备无关 所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异。因而设备无关性能够使用户编程时候,不必要考虑特殊的硬件设置。 比如说...

双缓冲 framebuffer 切换

双缓冲机制 最早解释多缓冲区如何工作的方式,是通过一个现实生活中的实例来解释的。在一个阳光明媚的日子,你想将水池里的水换掉,而又找不到水管的时候,你就只能用木桶来灌满水池。当木桶被水龙头注满的,...

android屏幕旋转在framework中的修改。

Android 竖屏启动  1)kernel 竖屏 选中: make menuconfig ---> Device Drivers  ---> Graphics support  ---...
  • ailinty
  • ailinty
  • 2012年04月06日 16:03
  • 9939

GDI(Graphics Device Interface), 图形设备接口

GDI是Graphics Device Interface的缩写,含义是图形设备接口,是Microsoft Windows表征图形对象及将其传送给诸如显示器、打印机之类输出设备的标准。它的主要任务是负...

GDI+ 画刷、矩阵、基本绘图函数、文字、图像

本文转自:http://blog.csdn.net/andywangcn/article/details/6270285   主要画刷 单色画刷SolidBrush SolidBrush(...

Graphics Device Interface

  • 2010年09月02日 15:44
  • 429KB
  • 下载

C#中基于GDI+(Graphics)图像处理系列之高质量缩略图

简介 动手前先解决两个问题 生成高质量的缩略图 完整示例程序源码 示例程序截图简介生成图片缩略图的功能在Web开发的工作是经常遇到的,比如用户上传一张图片作为用户头像,根据业务的需要生成若干不同尺寸的...

C#中基于GDI+(Graphics)图像处理系列之图片压缩优化

简介笔者刚开始接触计算机时是在学校里,学校的网速你懂的,学校局域网里能有5MB/s,而访问学校以外的网站时能有256KB/s就相当满意了。那时候笔者在开发网站时,处理图片时就特别小心,能用gif的不用...

windows下设备的Setup ClassGuid/Device Interface ClassGUID

windows下设备的各种guid名目繁多,MSDN上的解释也写的扑朔迷离,因此想借本文总结一下这些guid的区别.     最常见的应该是Setup ClassGuid--设备安装类了.当我们打开设...

QT 绘图设备和Graphics View Framework

绘图设备是指继承QPainterDevice的子类。Qt一共提供了四个这样的类,分别是QPixmap、QBitmap、QImage和QPicture。其中,QPixmap专门为图像在屏幕上的显示做了优...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WINDOW API基本屏幕绘图(GDI Graphics Device Interface 图像设备接口)
举报原因:
原因补充:

(最多只允许输入30个字)