同时设置长宽像素为512,放在独立的对话框程序中执行的程序就没问题(用微信截图时,会显示区域大小,实际大小为512)),而放在tab中的对话框中的明显要大出很多(用微信截图时,会显示区域大小,实际大小为700多)
机器也是同一台,没有做任何改变。用了getWindowRect测试后,发现放在tab中的rect和用微信截图时显示的区域大小是存在误差的,随后获取其父窗口(主对话框)的大小,也是和微信截图存在偏差。而另外一个独立的对话框程序就不会存在偏差。
谁能帮忙解答一下?多谢。
附图一张,在资源管理器显示有偏差,实际运行后像素是一样的。
代码如下:
CImage img;
CBitmap bitmap;
img.Load(_T("d:\\101.jpg"));
int iWithd = img.GetWidth();
int iHeight = img.GetHeight();
HBITMAP hBitMap = img.Detach();
bitmap.Attach(hBitMap);
CDC memDC;
CDC * pDC = GetDlgItem(IDC_STATIC_MAP)->GetDC();
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(bitmap);
CBrush brush;
brush.CreateSolidBrush(RGB(255, 0, 0));
CRect rect;
rect.left = x - 6;
rect.top = y - 6;
rect.right = x + 6;
rect.bottom = y + 6;
memDC.SelectObject(&brush);
memDC.Ellipse(&rect);
// StretchBlt可自行设置大小进行伸缩
pDC->StretchBlt(2, 2, iWithd, iHeight, &memDC,
0, 0, iWithd, iHeight, SRCCOPY);
DeleteObject(hBitMap);
bitmap.DeleteObject();
memDC.DeleteDC();
ReleaseDC(pDC);
4 个解决方案
#1
pDC->StretchBlt 替换成 BitBlt, 就是不缩放显示
对话框大小和字体有关
对话框大小和字体有关
#2
我也想不缩放显示,但是不缩放显示的话,实际展示时像素远远大于设定的像素值。
而且两个程序对话框的字体我都设置的是一致的。
#3
而且,我设置的也并非是缩放显示,我是按照图片的实际大小进行展示的。
#4
找到解决思路了:MapDialogRect(&rc);
#1
pDC->StretchBlt 替换成 BitBlt, 就是不缩放显示
对话框大小和字体有关
对话框大小和字体有关
#2
我也想不缩放显示,但是不缩放显示的话,实际展示时像素远远大于设定的像素值。
而且两个程序对话框的字体我都设置的是一致的。
#3
而且,我设置的也并非是缩放显示,我是按照图片的实际大小进行展示的。
#4
找到解决思路了:MapDialogRect(&rc);