VC在内存DC中画图写字但无法改变颜色

今天使用GDI函数想往DC中画些字, 很奇怪的是无论使用CPen还是SetTextColor都无法改变文字的颜色。几经排查后终于发现问题所在:

源代码如下:

 

void CPrintPreviewDlg::Test()
{
	int nWidth  = 600;
	int nHeight = 800;
	
	CDC *pDC = GetDC();
	CDC *pMemDC = new CDC;
	pMemDC->CreateCompatibleDC(pDC);

	// 创建Bitmap
	CBitmap *pBitmap = new CBitmap;
	
	// 注意下面这句, 创建兼容位图时必须使用pDC为参数
	// 我本来是使用pMemDC作为参数,导致改变颜色不起作用
	pBitmap->CreateCompatibleBitmap(pDC, nWidth, nHeight);
	CBitmap *pOldBitmap = pMemDC->SelectObject(pBitmap);

	// 画背景
	CGdiObject *pOldObject = pMemDC->SelectStockObject(WHITE_BRUSH);
	pMemDC->Rectangle(0, 0, nWidth, nHeight);
	pMemDC->SelectObject(pOldObject);

	// 输出文字
	CFont font;
	font.CreatePointFont(200, "宋体", pMemDC);	
	CFont *oldFont = pMemDC->SelectObject(&font);
	CRect rect(1, 1, 100, 200);
	pMemDC->SetTextColor(RGB(0, 0, 255));
	pMemDC->DrawText("输出测试", rect, DT_LEFT|DT_SINGLELINE|DT_VCENTER);
	pMemDC->SelectObject(oldFont);

	pMemDC->SelectObject(pOldBitmap);
	delete pBitmap;
	delete pMemDC;
	ReleaseDC(pDC);
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值