如何在打印或打印预览中调整DC的显示坐标?

dnyz520 2010-05-15 03:10:52
我在OnDraw中实现了图片与文字的重绘,但在正式打印或打印预览的时候根据需要要调整显示的位置.
我不知道应该在OnBeginPrinting调整还是在OnPrint中调整,应该怎么调整显示坐标,如何获得OnDraw中的DC,并且在打印DC中显示OnDraw已经绘好的DC.

哪位高手帮下菜菜,谢谢!


void CNotesPrintView::OnDraw(CDC* pDC)
{
CNotesPrintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);

if (pDoc->m_Image.IsNull())
return;

CRect rectView;;
GetClientRect(rectView);
CRect rectImage;
rectImage.SetRect(0, 0, pDoc->m_Image.GetWidth(), pDoc->m_Image.GetHeight());

// 如果窗口大于背景则取窗口大小
CRect rect(0,0,0,0);
rect.right = (rectView.Width() > rectImage.Width()) ? rectView.Width() : rectImage.Width();
rect.bottom = (rectView.Height() > rectImage.Height()) ? rectView.Height() : rectImage.Height();

CDC MemDC;
CBitmap MemBitmap;
MemDC.CreateCompatibleDC(pDC);
MemBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0, 0, rect.Width(), rect.Height(), RGB(255, 255, 255)); // 1.背景底色
pDoc->m_Image.Draw(MemDC, 0, 0); // 2.背景底图

MemDC.SetBkMode(TRANSPARENT); // 透明字体

int nCount = pDoc->m_saProp.GetSize();
for (int i = 0; i < nCount; i++)
{
MemDC.SetTextColor((COLORREF)pDoc->m_naColor.GetAt(i));
MemDC.SelectObject((CFont*)pDoc->m_ArrayFont.GetAt(i));
// 此处m_naMove与m_saProp相等公式以i为基数GetAt(i*2),GetAt(i*2+1)
MemDC.TextOut(pDoc->m_naMove.GetAt(i * 2), pDoc->m_naMove.GetAt(i * 2 + 1), pDoc->m_saProp.GetAt(i));
}

pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);

MemBitmap.DeleteObject();
MemDC.DeleteDC();
}
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dnyz520 2010-05-15
  • 打赏
  • 举报
回复
可以显示了,就是显示出来的内容在打印的时候位置需要调整,但直接在OnDraw中计算的话,打印的时候窗口内的内容会移动,我只想在打印时改动坐标,不想把改动坐标的这步显示出来.
dinjay 2010-05-15
  • 打赏
  • 举报
回复
?什么意思?是说你这么写完现在显示不出来是吗?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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