19,469
社区成员
发帖
与我相关
我的任务
分享
void CShowDlg::_DrawMotionCurve( HDC hdc, const _SHOW_DRAW_CARD_& Card )
{
HDC hMemDC = NULL;
hMemDC = CreateCompatibleDC( hdc );
if( Card.Polyline.size() >= 4 )
{
CPen* pPenBlue = new CPen;
if ( NULL != pPenBlue )
{
pPenBlue->CreatePen( PS_DOT, 1, RGB( 0, 0, 255 ) );
POINT polyline[MAX_POLY_POINT];
std::list<POINT>::const_iterator lit_pt;
int i = 0;
for( lit_pt = Card.Polyline.begin(); lit_pt != Card.Polyline.end(); lit_pt++ )
{
polyline[i] = *lit_pt;
i++;
}
HGDIOBJ hOldPen = SelectObject( hMemDC, pPenBlue );
PolyBezier( hMemDC, polyline, Card.Polyline.size() );
SelectObject( hMemDC, hOldPen );
delete pPenBlue;
}
}
BitBlt( hdc, 0, 0, 700, 700, hMemDC, 0, 0, SRCCOPY );
DeleteDC( hMemDC );
}
void DrawBmp(HDC hDC, LPRECT rcDst, HBITMAP hBmp)
{
//获取位图信息
BITMAP bmphd = {0};
GetObject(hBmp, sizeof(bmphd), &bmphd);
//创建兼容内存DC & 选入位图
HDC hMemDC = CreateCompatibleDC(hDC);
int nSaveDC = SaveDC(hMemDC);
SelectObject(hMemDC, hBmp);
//设置缩放半色调
int iPrvMode = SetStretchBltMode(hDC, HALFTONE);
//缩放贴图
StretchBlt(hDC,
rcDst->left, rcDst->top, rcDst->right-rcDst->left, rcDst->bottom-rcDst->top,
hMemDC,
0, 0, bmphd.bmWidth, bmphd.bmHeight,
SRCCOPY);
//恢复缩放显示模式
SetStretchBltMode(hDC, iPrvMode);
//结束清理
RestoreDC(hMemDC, nSaveDC);
DeleteDC(hMemDC);
}
void Draw(HDC hDC)
{
//获取像素大小
int cx = GetDeviceCaps(hDC, HORZRES);
int cy = GetDeviceCaps(hDC, VERTRES);
HDC hMemDC = CreateCompatibleDC(hDC); //创建兼容DC
int nSaveDC = SaveDC(hMemDC); //Save DC
HBITMAP hBmp = CreateCompatibleBitmap(hDC, cx, cy); //创建兼容位图
SelectObject(hMemDC, hBmp); //选入位图
//填充背景色
RECT rcRect = {0,0, cx, cy};
FillRect(hMemDC, &rcRect, (HBRUSH)GetStockObject(WHITE_BRUSH));
//其它绘制代码
{
//
//贴一张位图
//使用LoadImage 或 LoadBitmap 加载位图 hMyBmp (注意相应释放)
RECT rcBmp = {10, 10, 100, 100};
DrawBmp(hMemDC, &rcBmp, hMyBmp);
}
//贴图
BitBlt(hDC, 0, 0, cx, cy, hMemDC, 0, 0, SRCCOPY);
//结束清理
RestoreDC(hMemDC, nSaveDC);
DeleteObject(hBmp);
DeleteDC(hMemDC);
}
HDC hMemDC = hMemDC = CreateCompatibleDC( hdc );
void Draw(HDC hDC)
{
//获取像素大小
int cx = GetDeviceCaps(hDC, HORZRES);
int cy = GetDeviceCaps(hDC, VERTRES);
HDC hMemDC = CreateCompatibleDC(hDC); //创建兼容DC
int nSaveDC = SaveDC(hMemDC); //Save DC
HBITMAP hBmp = CreateCompatibleBitmap(hDC, cx, cy); //创建兼容位图
SelectObject(hMemDC, hBmp); //选入位图
//填充背景色
RECT rcRect = {0,0, cx, cy};
FillRect(hMemDC, &rcRect, (HBRUSH)GetStockObject(WHITE_BRUSH));
//其它绘制代码
{
}
//贴图
BitBlt(hDC, 0, 0, cx, cy, hMemDC, 0, 0, SRCCOPY);
//结束清理
RestoreDC(hMemDC, nSaveDC);
DeleteObject(hBmp);
DeleteDC(hMemDC);
}