win32编程 -- GDI绘图操作

简介: win32编程 -- GDI绘图操作

一、画笔步骤及相关代码

void 绘图(HWND hWnd)
{
       PAINTSTRUCT p = {};
       HDC hdc = BeginPaint(hWnd, &p);
       //1、创建笔
       HPEN hPen = CreatePen(PS_SOLID, 10, RGB(255, 0, 0));
       //2、将画笔应用到DC中
       HGDIOBJ jdcp = SelectObject(hdc, hPen);
       //3、绘图
       //画个点(hdc);
       //画线(hdc);
       //画矩形(hdc);
       画扇形(hdc);
       //4、从dc中取出画笔
       SelectObject(hdc, jdcp);
       //5、释放画笔
       DeleteObject(hPen);
       EndPaint(hWnd, &p);
}

0a2653c851af460fa595bd959398a8f1.png


二、画刷步骤及相关代码

//创建画刷
//HBRUSH hBrush = CreateSolidBrush(RGB(0, 255, 0));//实心
HBRUSH hBrush = CreateHatchBrush(HS_DIAGCROSS,RGB(0, 200, 0));//纹理
//HGDIOBJ hBrush = GetStockObject(NULL_BRUSH);创建透明画刷,背景图不会改变,不需要DeleteObject(hBrush);
     
//将画刷应用到dc中
HGDIOBJ hob = SelectObject(hdc, hBrush);
画扇形(hdc);
       //从dc中取出画刷
       SelectObject(hdc, hob);
       //释放画刷
       DeleteObject(hBrush);


0eacb84100b54626af849e6b562bf92a.png


三、位图


1、资源里面添加位图


2d65d23f6d4748949b924e4057485923.png


2、相关代码

void 绘图(HWND hWnd)
{
       PAINTSTRUCT p = {};
       HDC hdc = BeginPaint(hWnd, &p);
       //1、添加位图资源
       //2、加载位图资源
       HBITMAP hBmp = LoadBitmap(g_hInstance, (wchar_t*)IDB_BITMAP1);
       //3、创建虚拟区域接收上面的dc
       HDC hmdc = CreateCompatibleDC(hdc);
       //4、在虚拟区域绘画
       HGDIOBJ hobmp= SelectObject(hmdc, hBmp);
       //5、从虚拟区copy到原dc
       //原dc,开始地址,要copy的开始地址,虚拟dc,要copy的范围,copy方式
       BitBlt(hdc, 100, 100, 48, 48, hmdc, 0, 0, SRCCOPY);
        //原dc,开始地址,放大原图,虚拟dc,要copy开始地址,实际大小
       StretchBlt(hdc, 200, 100, 96, 96, hmdc, 0, 0, 48, 48, NOTSRCCOPY);
     
       //6、从虚拟dc取出位图
       SelectObject(hmdc, hobmp);
       //7、释放位图
       DeleteObject(hBmp);
       //8、释放内存dc
       DeleteDC(hmdc);
       EndPaint(hWnd, &p);
}

2e9b90b2ca334476abebe75bafe6eeaa.png


3、 GetObject方法,获取位图的相关信息

BITMAP bmpInfo = { 0 };
       GetObject(hBmp, sizeof(bmpInfo), &bmpInfo);
       BitBlt(hdc, 100, 100, bmpInfo.bmWidth, bmpInfo.bmWidth, hmdc, 0, 0,  SRCCOPY);
目录
相关文章
QT+OpenGL鼠标操作和模型控制
光线追踪法 从鼠标投射 3D 射线, 通过摄像机,进入场景,然后检查该光线是否与某个对象相交。
383 0
|
存储 编解码 缓存
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
Qt开发技术:Qt绘图系统(一)绘图系统介绍
|
7月前
|
API C语言 图形学
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
EasyX图形库学习(一、窗口创建函数initgraph、背景颜色设置setbkcolor、图形绘制函数)
|
7月前
MFC绘图操作
MFC绘图操作
42 0
|
7月前
|
Windows
win32编程 -- windows绘图操作
win32编程 -- windows绘图操作
78 0
EasyX趣味化编程note2,绘制基本图形(下)
EasyX趣味化编程note2,绘制基本图形(上)
150 0
|
开发者 Windows
EasyX趣味化编程note2,绘制基本图形(上)
EasyX趣味化编程note2,绘制基本图形
73 0
win32编程 -- GDI绘图操作
win32编程 -- GDI绘图操作
100 0
win32编程 -- GDI绘图操作
|
Windows
Windows程序设计——GDI基本画图的操作实现
Windows程序设计——GDI基本画图的操作实现
312 0
Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)
Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)
Python Qt GUI设计:QPainter、QPen、QBrush和QPixmap窗口绘图类(基础篇—17)