mfc写的视频播放器,如何同时改变视频屏幕和框架同倍数增减,最好有代码或。。。方法很好可多追加分 20
你的意思我明白,你是说视频放大2倍,那么外面的框架,也就是窗口,更加本质上说,就是对话框,也同比例扩大。
这个问题是这样的,MFC视频播放器的视频其实就是连续的帧,即图像组成,每一帧均显示在MFC自有的控件上,比如说,PIC CTRI,LABEL等等,这样一来,你说的其实很容易实现,就是改变控件的大小,同时也同比例改变对话框的大小,进一步将视频中新的图像“铺满”控件区域,就是你说的效果了
我先说说伪代码。
你需要在onpaint()这个函数中,实现控件上显示图像这一功能,这样一来,你的控件变大了,自然图像也跟着变大。
控件和框架(对话框)同倍增减,代码如下
void YUVviewerDlg::MovePicControl()
{
int dlgWidth; // 对话框宽
int dlgHeight; // 对话框高
int gapWidth; // 变化宽度
int gapHeight; // 变化高度// 获取对话框位置信息
GetDlgItem(IDD_YUVVIEWER_DIALOG);
GetWindowRect(&m_rDlg);
ScreenToClient(&m_rDlg);// 获取图片控件位置信息
m_pStatic->GetWindowRect(&m_rPicControl);
ScreenToClient(&m_rPicControl);// 图片控件大小变化
if ((m_Width < 200) || (m_Height < 200))
{
gapWidth = m_rPicControl.left + 2 * m_Width - m_rPicControl.right;
m_rPicControl.right = m_rPicControl.left + 2 * m_Width;
gapHeight = m_rPicControl.top + 2 * m_Height - m_rPicControl.bottom;
m_rPicControl.bottom = m_rPicControl.top + 2 * m_Height;
}
else
{
gapWidth = m_rPicControl.left + m_Width - m_rPicControl.right;
m_rPicControl.right = m_rPicControl.left + m_Width;
gapHeight = m_rPicControl.top + m_Height - m_rPicControl.bottom;
m_rPicControl.bottom = m_rPicControl.top + m_Height;
}// 移动图片控件
m_pStatic->MoveWindow(&m_rPicControl);
m_pStatic->ModifyStyle(0xF, SS_BITMAP|SS_CENTERIMAGE);// 对话框宽高
dlgWidth = m_rDlg.right - m_rDlg.left;
dlgHeight = m_rDlg.bottom - m_rDlg.top;// 控件重新布局
ReLayout(IDC_PLAY, IDC_SCROLLBAR4, gapWidth, gapHeight, FROMPICTURECONTROL);
ReLayout(IDC_STATUS_BAR, IDC_STATUS_BAR, gapWidth, gapHeight, FROMPICTURECONTROL);
SetWindowPos(NULL, 0, 0, dlgWidth + gapWidth, dlgHeight + gapHeight, SWP_NOMOVE|SWP_NOZORDER);
}
不明白可以继续问~希望能帮到你
能做一个实例(一个框,贴上一张图片,有那个意思就行)吗?大神 0基础啊,谢谢了(今天急需要啊) (Q:1790303420)