gdi相关

TextOutW

BOOL TextOutW(
HDC hdc,
int x,
int y,
LPCWSTR lpString,
int c
);

文字颜色

dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(255, 0, 0));
dc.TextOut(40/*起始x坐标*/, rcClient.Height() - 25/*起始y坐标*/, _T("版本号:V1.0.0")/*需要显示的文字*/);

中间显示文字

BOOL TextOutW(
HDC hdc,
int x,
int y,
LPCWSTR lpString,
int c
);

m_memDC.SetTextAlign(TA_BASELINE | TA_CENTER);
m_memDC.TextOutW(block_left + 48, block_top + 52, L"T1");

获取文字宽度

// 第一行状态文字 宽度
SIZE sizeFont;
GetTextExtentPoint32(m_memDC, L"超下公差", (int)wcslen(L"超下公差"), &sizeFont);
// 宽度 sizeFont.cx;

画线,颜色

CPen penDot(PS_DOT, 1, RGB(0x46, 0x3F, 0x3F));
auto old_obj = m_memDC.SelectObject(penDot);
m_memDC.MoveTo(x_left, y - 1);
m_memDC.LineTo(x_left, 10);
m_memDC.SelectObject(old_obj);
CPen(Int style,int width ,COLORREF color);

style:画笔样式,可以为以下样式:

PS_SOLID 实线
PS_DASH 虚线,该值只有当画笔宽度等于1个设备单位或更小时才有效
PS_DOT 点线,该值只有当画笔宽度等于1个设备单位或更小时才有效
PS_DASHDOT 点和虚线交替,该值只有当画笔宽度等于1个设备单位或更小时才有效
PS_DASHDOTDOT 双点线和虚线交替,该值只有当画笔宽度等于1个设备单位或更小时才有效
PS_NULL 空画笔
PS_GEOMETRIC 几何画笔
.......

width:画笔宽度。
color:画笔颜色。

使用gdi+显示GIF动画

用了ImageEx类,文件在handyLib项目里面。

CiPcPayTesterApp file

private:
ULONG_PTR m_gdiplusToken;

//use GDIplus begin
Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
//use GDIplus end

int CiPcPayTesterApp::ExitInstance()
{
//close gdiplus environment
Gdiplus::GdiplusShutdown(m_gdiplusToken);
return CWinApp::ExitInstance();
}

CDlgWaite file

// GDI+
ImageEx* m_image;

CDlgWaite::CDlgWaite(CWnd* pParent /*=NULL*/)
: CDialog(IDD_DLGWAITE, pParent)
{
// GDI+
m_image = NULL;
}

CDlgWaite::~CDlgWaite()
{
// GDI+
delete m_image;
}

// GDI+
m_image = new ImageEx(strModule);
CRect rc;
GetClientRect(rc);

::SetWindowPos(this->m_hWnd, HWND_NOTOPMOST, 0, 0, 200, 200, SWP_NOMOVE);
// int cx = (rc.Width() - m_image->GetWidth()) / 2;
m_image->InitAnimation(m_hWnd, CPoint(0, 0));