gdi和gdi+

gdi

DC

获取DC

// 第一种
::GetDC(hWnd);
::ReleaseDC(hwnd, hdc);
// 第二种
PAINTSTRUCT ps;
::BeginPaint(hwnd, &ps);
::EndPaint(hwnd, &ps);
// 第三种 创建兼容内存DC
HDC hMemDC = ::CreateCompatibleDC(hDest);
::DeleteDC(hMemDC);
// 第四种 ddraw表面 IDirectDrawSurface
IDirectDrawSurface->GetDC(&hDc);
IDirectDrawSurface->ReleaseDC(hDc)

操作DC

SaveDC
RestoreDC

gdi对象

   分类

  • 画笔HPEN
  • 画刷HBRUSH
  • 字体HFONT
  • 区域HRGN
  • 位图HBITMAP

   通用gdi对象

  • xxx_PEN       - 如 WHITE_PEN和NULL_PEN
  • xxx_BRUSH  - 如 WHITE_BRUSH和NULL_BRUSH
  • xxx_FONT    - 如 DEVICE_DEFAULT_FONT

   通过对象ID号获取通用gdi对象

HGDIOBJ GetStockObject(int i); 

   获取gdi对象信息

int WINAPI GetObejct(HANDLE h, int c, LPVOID pv);   

   使用

HGDIOBJ WINAPI SelectObject(HDC hdc, HGDIOBJ h); 

   画笔

//
CreatePen
SelectObject
DeleteObject

   画刷

// 单色 阴影 图案
CreateSolidBrush
CreateHatchBrush
CreatePatternBrush

   字体

LOGFONT lf = { 0 };
HFONT hNewFont = ::CreateFontIndirect(&lf);
HFONT hOldFont = ::SelectObject(hDC,hNewFont);
::DrawText(hDC,_T(""),3,&rect,DT_LEFT);
::SelectObject(hDC,hOldFont);
::DeleteObject(hNewFont);

   区域

CreateRectRgnIndirect
CreateRoundRectRgn
CombineRgn
DeleteObject

   位图

// 获取位图信息
BITMAP bm;
::GetObject(hBitmap, sizeof(BITMAP), &bm);
// 导入位图
::LoadBitmap(hIns,MAKEINTRESOURCE(IDB_XXX));
::LoadImage(hIns,MAKEINTRESOURCE(IDB_XXX),IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADMAP3DCOLORS);
::LoadImage(hIns,_T(".\\1.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_DEFAULTSIZE|LR_CREATEDIBSECTION);
// 销毁
::DeleteObject();

CreateDIBSection
CreateCompatibleBitmap

gdi绘制

// 绘制点
SetPixel()
// 绘制线
MoveToEx()
LineTO()
// 绘制矩形
Rectangle()
// 绘制圆
Ellipse()
// 绘制饼
Pie()

gdi的api

blt 

// BitBlt
BOOL WINAPI BitBlt(
    HDC hdcDst,
    int xDst, int yDst, int wDst, int hDst,
    HDC hdcSrc,
    int xSrc, int ySrc
    DWORD rop
);
// StretchBlt
BOOL WINAPI StretchBlt(
    HDC hdcDst,
    int xDst, int yDst, int wDst, int hDst,
    HDC hdcSrc,
    int xSrc, int ySrc, int wSrc, int hSrc
    DWORD rop
);
// demo
::BitBlt(hDest,x,y,w,g,hMemDC,0,0,SRCCOPY);

create

// 创建字体HFONT
CreateFontIndirect

set和get

//
SetTextColor
// 设置背景模式,比如透明:TRANSPARENT
SetBkMode
// 设置和获取指定点的颜色
SetPixel
GetPixel

 draw

#
DrawText
TextOut

gdi+

初始化和反初始化

// 初始化
ULONG_PTR uToke;
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&uToke,& gdiplusStartupInput);
// 反初始化
GdiplusShutdown(uToke);

 Graphics

类似于DC

DrawLine

DrawRectangle

DrawEllipse

DrawPie

DrawString

DrawImage

MeasureString

gdi+类

Pen

SolidBrush HatchBrush TextureBrush LinearGradientBrush

Font

Bitmap

StringFormat

相关窗口API

IsWindow

GetWindowRect

GetClientRect

ClientToScreen

ScreenToClient

SetWindowPos

序言 4 目标 4 适用范围 4 适用读者 4 运行环境 4 文档组织 4 相关主题 4 GDI+的安全考虑 6 检验构造函数调用成功与否 6 分配缓冲区 6 错误校验 8 线程同步 9 相关主题 10 关于GDI+ 11 GDI+ 介绍 11 GDI+ 概览 11 GDI+ 的三个组成部分 11 基于类的接口架构 12 GDI+提供了哪些新东西? 12 新特征 12 编程模式的改变 15 线条、曲线和图形 19 矢量图概览 19 钢笔、线条和矩形 20 椭圆和弧 22 多边形 22 基数样条 23 贝塞尔样条 24 路径 25 画刷和填充图形 27 开放与闭合曲线 29 区域 30 裁剪 31 路径平直化 32 线条和曲线的抗锯齿功能 32 图象、位图和图元文件 33 位图类型 34 图元文件 37 绘制、定位和复制图片 39 裁剪和缩放图象 40 坐标系统和转换 42 坐标系统类型 42 以矩阵来表示转换 44 全局和局部转换 48 图形容器 51 使用GDI+ 56 使用入门 56 绘制线条 56 绘制字符串 58 使用钢笔绘制线条和形状 59 使用钢笔绘制线条和矩形 59 设置钢笔的宽度和对齐方式 60 绘制具有线帽的线条 61 联接线条 62 绘制自定义虚线 62 绘制用纹理填充的线条 63 使用画笔填充形状 63 用纯色填充形状 64 用阴影图案填充形状 64 用图像纹理填充形状 64 在形状中平铺图像 65 用渐变色填充形状 68 使用图像、位图和图元文件 68 加载和显示位图 68 加载和显示图元文件 69 记录图元文件 69 剪裁和缩放图像 71 旋转、反射和扭曲图像 72 缩放时使用插值模式控制图像质量 73 创建缩略图像 75 采用高速缓存位图来提高性能 76 通过避免自动缩放改善性能 76 读取图像元数据 77 使用图像编码器和解码器 83 列出已安装的编码器 83 列出已安装的解码器 84 获取解码器的类标识符 86 获取编码器的参数列表 88 将BMP图像转换为PNG图像 100 设定JPEG的压缩等级 101 对JPEG图像进行无损变换 102 创建和保存多帧图像 105 从多帧图像中复制单帧 107 Alpha 混合线条和填充 109 绘制不透明和半透明的线条 109 用不透明和半透明的画笔绘制 110 使用复合模式控制 Alpha 混合 111 使用颜色矩阵设置图像中的 Alpha 值 112 设置单个象素的alpha值 114 使用字体和文本 115 构造字体系列和字体 115 绘制文本 116 格式化文本 117 枚举已安装的字体 120 创建专用的字体集合 122 获取字体规格 126 对文本使用消除锯齿效果 130 构造并绘制曲线 131 绘制基数样条曲线 131 绘制贝塞尔样条 133 用渐变画刷填充形状 134 创建线性渐变 134 创建路径渐变 137 将 Gamma 校正应用于渐变 144 构造并绘制路径 145 使用线条、曲线和形状创建图形 145 填充开放式图形 147 使用图形容器 147 管理 Graphics 对象的状态 148 使用嵌套的 Graphics 容器 151 变换 154 使用世界变换 154 为什么变换顺序非常重要 155 使用区域 156 对区域使用点击检测 156 对区域使用剪辑 157 对图像重新着色 158 使用颜色矩阵对单色进行变换 158 转换图像颜色 160 缩放颜色 161 旋转颜色 164 剪取颜色 166 使用颜色重映射表 168 打印 169 将GDI+输出至打印机 169 显示一个打印对话框 172 通过提供打印机句柄优化打印 173 附录:GDI+ 参考 176
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值