C++绘图

本文详细描述了在WindowsGDI编程中如何使用内存设备上下文(MemDC)进行图形操作,包括创建兼容DC、填充背景、绘制椭圆、文本输出以及图像的缩放和复制。
摘要由CSDN通过智能技术生成
CWnd *pwnd=GetDlgItem(IDC_STATIC_SHOW);
CDC* pDC=pwnd->GetDC();;
CBitmap MemBitmap,* pOldBitmap;        // 内存DC中承载临时图像的位图 
MemDC.CreateCompatibleDC( pDC );
CDC     MemDC;             // 用于缓冲绘图的内存DC
MemDC.CreateCompatibleDC( pDC ); 
pOldBitmap=MemDC.SelectObject( &MemBitmap );// 将兼容位图选入到内存缓冲DC,相当于画布,必须选进内存DC 
MemDC.FillSolidRect( 0,0,600,600, RGB(255,255,255) );
CPen PenDotWhite(PS_DASHDOT, 1, RGB(100,100,100));
CBrush *pBrush =CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
CBrush *pOldBrush=MemDC.SelectObject(pBrush);
MemDC.Ellipse(300,300,500,500);
MemDC.SelectObject(&penb);//绘制指令
MemDC.TextOut(500,10,"指令");
MemDC.MoveTo(550,20);
MemDC.TextOut(585,310,"Y");
//前面是窗体上的位置,后面是要帖的图位置,实现放缩贴图
pDC->StretchBlt((rect.Width()-rect.Height())/2,0,min(rect.Width(),rect.Height()),min(rect.Width(),rect.Height()),&MemDC,0,0,600,600,SRCCOPY);
//切换回所有原始资源
MemDC.SelectObject(pOldFont);
MemDC.SelectObject(pOldBrush);
MemDC.SelectObject(poldPen);
MemDC.SelectObject(pOldBitmap);//恢复设备上下文

//删除资源
font.DeleteObject();
penb.DeleteObject();
penr.DeleteObject();
pBrush->DeleteObject();
MemBitmap.DeleteObject();
PenDotWhite.DeleteObject();

MemDC.DeleteDC();
ReleaseDC(pDC);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值