MFC如何使picture控件的图片随着对话框的大小改变而改变

已经解决了控件大小随着对话框大小的改变而变化的问题,不过解决的不太好,在改变对话框大小的时候,一些按钮上面的字会变形或者看不到
现在的问题是,picture控件上面显示一幅图片,改变对话框大小,picture控件大小也会改变,但是图片就不会跟着变化,这样会出现一部分黑色,怎么解决这个问题呢?
是在添加的onpaint里面加一些什么吗,这个图片的数据保存在一个 char*里面。

图片随着对话框放大,只能使用图像放缩了,这个会产生一定的失真。

方法其实很简单,涉及两个方面:

    将所有图片显示代码中,使用BitBlt改为 StretchBlt(需要调整两个参数,见2)

    StretchBlt放缩显示,有两个新参数,就是目标区域大小,这个就需要你根据实际情况进行坐标运算了,或者是控件计算好的比例,或者是控件放缩后的大小(因为你控件是需要计算的,因此这个坐标宽高应该是现成的)。

总之,就是在现有代码基础上,将位图点阵拷贝改成通过坐标计算后的放缩拷贝,多数代码应该在OnPaint里面吧。

追问

你好,在吗,我想百度Hi问你一些问题

追答

百度hi Web在线,hi有点小问题,可能回复不及时。

温馨提示:内容为网友见解,仅供参考
无其他回答

MFC如何使picture控件的图片随着对话框的大小改变而改变
1、在对话框类中加入成员变量CRect m_rect;用于保存对话框大小变化前的大小;2、在对话框的OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);3、在WM_SIZE的响应函数OnSize()中加入以下代码:CWnd *pWnd;pWnd = GetDlgItem(IDC_LIST); \/\/获取控件句柄 if(pWnd)\/\/判断是否...

MFC如何使picture控件的图片随着对话框的大小改变而改变
方法其实很简单,涉及两个方面:将所有图片显示代码中,使用BitBlt改为 StretchBlt(需要调整两个参数,见2)StretchBlt放缩显示,有两个新参数,就是目标区域大小,这个就需要你根据实际情况进行坐标运算了,或者是控件计算好的比例,或者是控件放缩后的大小(因为你控件是需要计算的,因此这个坐标宽高应该是...

如何使MFC中picture控件显示出来的图片和实际图片大小一致?
你只要将picture控件放在 窗口的左上角 ,调整窗口客户区大小和图片一样打就可以。

MFC如歌让图片自适应PictureControl大小
在对话框收到WM_SIZE时,先获取对话框的大小,然后改变picturebox的大小即可。CRect rcClient,rcPicture;GetClientRect(&rcClient);m_PictureBox.GetClientRect(&rcPicture);\/\/ 移动picturebox到对话框的左上角。rcPicture.MoveToX(0);rcPicture.MoveToY(0);\/\/ pircurebox的长宽是对话框长宽的2分...

mfcpicture控件设置图片自动切换
设置图片自动切换的步骤如下:1、加载bitmap图片,新建个mfc工程文件。2、拖动一个PictureControl控件到界面上。3、修改属性ID和Type值。4、右击资源文件,加入新的一张.bmp的图片进来,这个图片位置放置在res文件中。5、为图片添加个变量,更改下变量名。6、界面上拖个Button上来,双击,点击个点击事件...

MFC中怎么样让对话框开始就全屏显示?并且让里面的picture控件也...
首先获得屏幕分辨率,然后用setwindowpos设置窗口大小,以上操作在初始化函数中添加。picture控件如果使对话框的话可以用对齐来放到想放的位置,文档的话计算一下坐标吧,用图片控件类里的相关函数来设置位置

...Control)而另一个控件(Picture control)上边的图片会改变_百度...
我不知道怎么读取图片,所以我的方法是,先在对话框建若干Picture Control ,每个Picture Control 里面放一张图,在Spin Control前面先建一个EDIT CONTROL,然后建Spin Control与之绑定,在EDIT CONTROL的响应函数里根据EDIT CONTROL中的整数值选择该显示的图片进行显示 ...

MFC中怎么通过程序改变Picture Control控件的大小
获取到 picture control控件的句柄或指针,调用MoveWindow函数就可以重置该控件的位置和尺寸大小。

现在用MFC的PICTURE控件显示视频,但是摄像头采集的图像要比显示框中...
如果对显示大小没有要求的话,可以获取视频窗口的大小,然后调整控件的大小 如果对显示大小有限制,则需要自己手动显示,取单帧,加头,贴图,或用 dx opencv 之类的第三方库来操作

MFC怎么让主窗口随View类改变大小
使控件CLISTBOX类对象窗口(IDC_QQLISTBOX)以及两个CBUTTON类对象(IDC_MAIL)、(IDC_WEB)随着主窗体的变化而自动变化。具体操作步骤:1、在主对话框类class CQQDlg : public CDialog中添加对象CRect m_rect,用来记录当前对话框的大小。并在初始化函数OnInitialDialog()中获取该大小GetClientRect (...

相似回答