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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值