vc在静态控件中绘图,如果控件大小超过屏幕如何保存
要求绘制A4大小的图片,静态控件设置成A4大小(已经超过屏幕)
图片绘制完成后,超出屏幕部分是空白的
现要求可以另存为图片,保存成图片文件后,超出屏幕的部分也是空白的
这种情况该如何处理?
[解决办法]
你应当自己在内存维护一个设备环境,或者当保存为图片时应当在自己创建的内存设备环境(DC)中绘图。 它位于内存,与屏幕无关。 创建兼容设备环境: CreateCompatibleDC, 创建兼容设备位图:CreateCompatibleBitmap。
百度一下,查找相关代码。
[解决办法]
没有必要把控件大小设置成A4大小,屏幕中显示,可以缩小显示,保存到文件时,可按自己的需要设置内存位图大小。 关键是设置好绘图的缩放比例。 就是设置好逻辑尺寸和设备尺寸的映射关系。
一下是我程序中的一些代码,大概用这些函数设置映射关系
void CSlidePage::OnPrepareDC(CDC * pDC)
{
ASSERT(pDC != NULL);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(100000,100000);
pDC->SetViewportExt(m_nBili * 10, m_nBili * 10);
SIZE sz = m_pEpm->GetPageOffset(0);
pDC->LPtoDP(&sz);
pDC->SetViewportOrg(sz.cx,sz.cy);
pDC->SetWindowOrg(0,0);
}