急!YUY2图片放大问题

kingingr 2014-11-02 02:33:05
//原始流尺寸
LPSNAP_DATA pData = new SNAP_DATA;
pData->pYUY2 = new BYTE[nWidth*nHeight*2];
pData->pRGB = new BYTE[nWidth*nHeight*4];
pData->dwCard = dwCard;
pData->nWidth = nWidth;
pData->nHeight = nHeight;
for(ULONG i = 0; i < nHeight-1; i++)
{
memcpy(pData->pYUY2 + (nHeight-i-1)*nWidth*2, pbuff, nWidth*2);
pbuff = pbuff + nWidth*2;
}

因为不是做C++的,也没有图形编程的经验,所以请大家帮助解答一下:
以上是原始尺寸的图片
请问如何才能宽度和高度都放大1倍后正常成像?


...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojc520520 2014-11-02
  • 打赏
  • 举报
回复
up
笨笨仔 2014-11-02
  • 打赏
  • 举报
回复
放大图像其实相当于将显示设备的视口缩小,因为图像大小未变,所以在同样的屏幕中看到的图像就变大了。 使用ScaleViewportExt()函数,修改视区边界相对于当前值。例:

	// 此处处理显示的新的坐标起点
	CScrollView::OnPrepareDC(pDC, pInfo);
	if(pDC->IsPrinting())
		return;							// 如果是打印则结束
	ASSERT(m_Zoom > 0.0f);				// 缩放因子合法性检查
	int denom(1000);				// 比例因子
	int num((int)(m_Zoom * (float)denom));	// 放大倍数=缩放因子*比例因子
	// 映射模式为设备模式
	pDC->SetMapMode(MM_ANISOTROPIC);
	pDC->ScaleWindowExt(denom, 1, denom, 1);	// 改变窗口扩展值
	num *= denom;
	pDC->ScaleViewportExt(num,			// X轴放大倍数
						denom,			// X轴比例因子
						num,			// Y轴放大倍数
						denom);			// Y轴比例因子
	// 显示基准点位于m_orgPoint中
	pDC->SetViewportOrg(OffsetDocument());				// ** 此处设置了显示的基点后,在随后的显示中被应用

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧