两个对话框拼在一起,一上一下,都是无框架的属性设置为
上面个对话框我是贴图
下面个是用刷子刷个颜色
但效果就是两个对话框拼起来看象是一个对话框,也就是做到颜色的一致
现在颜色是一致了
但贴图的那对话框最底下有个很细的亮条,这样跟下一个对话框拼起来就不像是一个整体了。
那个图片下面是没有亮条的!
后来上一个对话框我也用刷子刷,发现没问题
但就是贴图的时候会这样
请问到底是怎么回事啊?
下面贴出我画图的代码://采用GDI+双缓冲画图
CPaintDC dc(pWnd);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bmp;
CRect rc;
pWnd->GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
memdc.SelectObject(&bmp);
bmp.DeleteObject();string strCurPath = GetCurPath();
char strPicPath[MAX_PATH] = {0};
sprintf_s(strPicPath, "%s\\PicData\\%s", strCurPath.c_str(), strPicName);
Image image( ToWChar(strPicPath) ); //图片路径
Graphics graphics(memdc);graphics.DrawImage(&image, 0, 0, image.GetWidth(), image.GetHeight());
dc.BitBlt(x, y, image.GetWidth(),image.GetHeight(), &memdc, 0, 0, SRCCOPY);
上面个对话框我是贴图
下面个是用刷子刷个颜色
但效果就是两个对话框拼起来看象是一个对话框,也就是做到颜色的一致
现在颜色是一致了
但贴图的那对话框最底下有个很细的亮条,这样跟下一个对话框拼起来就不像是一个整体了。
那个图片下面是没有亮条的!
后来上一个对话框我也用刷子刷,发现没问题
但就是贴图的时候会这样
请问到底是怎么回事啊?
下面贴出我画图的代码://采用GDI+双缓冲画图
CPaintDC dc(pWnd);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bmp;
CRect rc;
pWnd->GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
memdc.SelectObject(&bmp);
bmp.DeleteObject();string strCurPath = GetCurPath();
char strPicPath[MAX_PATH] = {0};
sprintf_s(strPicPath, "%s\\PicData\\%s", strCurPath.c_str(), strPicName);
Image image( ToWChar(strPicPath) ); //图片路径
Graphics graphics(memdc);graphics.DrawImage(&image, 0, 0, image.GetWidth(), image.GetHeight());
dc.BitBlt(x, y, image.GetWidth(),image.GetHeight(), &memdc, 0, 0, SRCCOPY);
//采用GDI+双缓冲画图
CPaintDC dc(pWnd);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
CBitmap bmp, *pOldBitmap = NULL;
CRect rc;
pWnd->GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
pOldBitmap = memdc.SelectObject(&bmp);
//bmp.DeleteObject(); //这里为什么要删除对象?string strCurPath = GetCurPath();
char strPicPath[MAX_PATH] = {0};
sprintf_s(strPicPath, "%s\\PicData\\%s", strCurPath.c_str(), strPicName);
Image image( ToWChar(strPicPath) ); //图片路径
Graphics graphics(memdc);memdc.FillSolidRect(rc, clrBg); //先用背景色填充, clrBg是背景色
graphics.DrawImage(&image, 0, 0, image.GetWidth(), image.GetHeight());
dc.BitBlt(x, y, image.GetWidth(),image.GetHeight(), &memdc, 0, 0, SRCCOPY);
memdc.SelectObject(pOldBitmap);
pWnd->GetClientRect(&rc);
bmp.CreateCompatibleBitmap(&dc, rc.Width(), rc.Height());
pOldBitmap = memdc.SelectObject(&bmp);而在这里,你的画布大小确是跟你的对话框大小一致的我估计,你的对话框比你的图片大。你试着移动一下你的对话框,或者用其它别的窗体,从你的窗口上划过,看看是否留下残影。 如果留下了残影就说明了,出现问题的地方没有画到。