MFC加载背景图片后变模糊的原因

void CMFCApplication1Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文
		
		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
		
		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		//CDialogEx::OnPaint();    //禁止调用这个
		// 窗体DC
		CPaintDC dc(this);
		//位图变量
		CBitmap m_bitmap;
		// 载入位图资源
		m_bitmap.LoadBitmap(IDB_BITMAP1);
		//临时DC
		CDC memdc;
		//创建临时DC
		memdc.CreateCompatibleDC(&dc);
		//选中位图对象
		memdc.SelectObject(&m_bitmap);
		//定义位图宽度和高度、
		int width,height;
		BITMAP bmp;
		//获取位图信息
		m_bitmap.GetBitmap(&bmp);
		//位图宽度
		width = bmp.bmWidth;
		//位图高度
		height = bmp.bmHeight;
		//窗体大小
		CRect rect;
		this->GetClientRect(&rect);
		dc.SetStretchBltMode(HALFTONE);   //图形失真问题
		//拉伸模式
 		dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),\
 						 &memdc,0,0,width,height,SRCCOPY);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值