15,980
社区成员
发帖
与我相关
我的任务
分享
void CSDI6View::OnDraw(CDC* pDC)
{
CSDI6Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int nSaveDC = pDC->SaveDC();
//获取客户区坐标
CRect rcClient;
GetClientRect(&rcClient);
const COLORREF bkColor = RGB(255, 255, 255);
//填充背景色
pDC->FillSolidRect(rcClient, bkColor);
//设置背景透明
int OldBkMode = pDC->SetBkMode(TRANSPARENT);
//黑色画交叉线
{
CPen pen(PS_SOLID, 2, RGB(0, 0, 0));
CPen *pOldPen = pDC->SelectObject(&pen);
pDC->MoveTo(rcClient.left, rcClient.top);
pDC->LineTo(rcClient.right, rcClient.bottom);
pDC->MoveTo(rcClient.left, rcClient.bottom);
pDC->LineTo(rcClient.right, rcClient.top);
}
//按背景色透明贴图
{
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);
BITMAP bmInfo;
bmp.GetBitmap(&bmInfo);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
CBitmap *pOldBmp = memDC.SelectObject(&bmp);
TransparentBlt(pDC->m_hDC,
rcClient.CenterPoint().x - bmInfo.bmWidth/2,
rcClient.CenterPoint().y - bmInfo.bmHeight/2, 200, 200,
memDC.m_hDC,
0, 0, bmInfo.bmWidth, bmInfo.bmHeight,
bkColor);
memDC.SelectObject(pOldBmp);
}
//结束清理
pDC->SetBkMode(OldBkMode);
pDC->RestoreDC(nSaveDC);
}
CPaintDC dc(this);
ASSERT(NULL != GetSafeHwnd());
CRect rect;
GetClientRect(&rect);
// LineTo/MoveTo
dc.MoveTo(rect.BottomRight());
dc.LineTo(rect.TopLeft());
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
ASSERT(NULL != bitmap.GetSafeHandle());
CDC memDC;
memDC.CreateCompatibleDC(&dc);
ASSERT(NULL != memDC.GetSafeHdc());
CBitmap* pOldBitmap = memDC.SelectObject(&bitmap);
dc.BitBlt(100, 50, 300, 300, &memDC, 0, 0, SRCCOPY);