关于VS2012上在MFC中使用GDI+的配置问题
我找了许多教程,都按着过程做了,编译也没问题,出来了默认的对话框。可是当我添加了一些GDI+的绘图函数以后,虽然没错,但怎么也显示不出来应该有的图像,这到底是为什么啊,怎...
我找了许多教程,都按着过程做了,编译也没问题,出来了默认的对话框。
可是当我添加了一些GDI+的绘图函数以后,虽然没错,但怎么也显示不出来应该有的图像,这到底是为什么啊,怎么办? 展开
可是当我添加了一些GDI+的绘图函数以后,虽然没错,但怎么也显示不出来应该有的图像,这到底是为什么啊,怎么办? 展开
1个回答
展开全部
这还得看代码,我用的是vs2010 没遇到过类似问题,不一定是配置问题。
更多追问追答
追问
我就在OnInitDialog()加了简单的三句话,
Graphics myg(GetDC()->m_hDC);
Image myImage(L"D:\\ZHY1.png");
myg.DrawImage(&myImage, 10, 10);
按理说应该没问题的啊。。
追答
void Cpicture2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast(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
{
//CDialog::OnPaint();
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP是背景位图对应的ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);
CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
dc.StretchBlt(0,0,bitmap.bmWidth,bitmap.bmHeight,&dcMem,0,0,
bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);//这里我让显示区域矩形宽高和图像宽高一致
}
}
这是我曾经写的,你用这种方法拷贝bitmap试试
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询