关于打印图像的问题,各位高手来看看。

laserman 2002-07-12 01:48:08
CDC * m_pMemDC;//内存设备环境。
void CChartPilotView::OnPaint()
{
CPaintDC dc(this);
CView::OnPrepareDC(&dc);

dc.StretchBlt(0,0,300,300,m_pMemDC,
0,0,300,300,SRCCOPY);
}
以上代码能用,显示正常。
void CChartPilotView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
pDC->SetMapMode(MM_TWIPS);

pDC->StretchBlt(100,-100,8000,-8000,m_pMemDC,
0,0,300,300,SRCCOPY);

}
这段代码也能使用,打印预览一点问题没有,但就是什么都打不出来。
如果加上
pDC->TextOut(1000,-1000,"fdsa");
能打出字来,但图像还是不显示。
这是怎么搞的,高手帮帮忙,谢谢
...全文
40 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
laserman 2002-07-13
  • 打赏
  • 举报
回复
这里的激光打印机只能打黑白的,我的程序又没有将彩色的图转为黑白的功能。结果范了简单的错误。
laserman 2002-07-13
  • 打赏
  • 举报
回复
好了,结贴,使激光打印机的问题
yhb4 2002-07-13
  • 打赏
  • 举报
回复
up
laserman 2002-07-13
  • 打赏
  • 举报
回复
1.m_pMemDC中肯定有内容,在OnPaint()中就是把内存中拷过去的
2.坐标出错我不能肯定。但是,
一。pDC->TextOut(1000,-1000,"fdsa");能输出说明pDC坐标应该没错。
二。将pDC->StretchBlt(100, -100, 8000, -8000, m_pMemDC, 0, 0, 300, 300, SRCCOPY);放到OnPaint()中,修改前一部分的坐标系显示正常,说明m_pMemDC坐标也没问题。
三。我怀疑是否StretchBlt()有问题,可是打印预览正常
我不是大明 2002-07-13
  • 打赏
  • 举报
回复
把 : 100,-100,8000,-8000 也改成 0 , 0 , 300 , 300看有无图像输出,如果有一个较小图像输出,则说明是坐标有问题,
如果 这样也没有轮出, 看在打印前有无SetWindowOrg之类的语句,有去了,再没有就是StrectBlt的问题了!
彼得 2002-07-13
  • 打赏
  • 举报
回复
1. 检查m_pMemDC中是否有内容
2. 检查是否坐标出错
laserman 2002-07-12
  • 打赏
  • 举报
回复
int capability=pDC->GetDeviceCaps(RASTERCAPS);
if (capability&RC_STRETCHBLT==RC_STRETCHBLT)
{
TRACE("\nPrint OK\n");
}
else
{
TRACE("\nPrint xxxx\n");
}
输出Print OK,正常,可就是打不出来。
另外,我试了,用Word可以打出图像来的,不是打印机的问题
flyingjust 2002-07-12
  • 打赏
  • 举报
回复
你用的stretchblt
用capability==RC_STRETCHBLT判断
laserman 2002-07-12
  • 打赏
  • 举报
回复
void CChartPilotView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
中我加上
int capability=pDC->GetDeviceCaps(RASTERCAPS);
if (capability&RC_BITBLT==RC_BITBLT)
{
TRACE("\nPrint OK\n");
}
else
{
TRACE("\nPrint xxxx\n");
}
结果输出Print OK,那说明没有问题呀
zzm_china 2002-07-12
  • 打赏
  • 举报
回复
你需要检查打印机是否具备BITBLT性能,你可以测试用如下语句测试:
int capability=printdc->GetDeviceCaps(RASTERCAPS);
如果具备BITBLT性能,应该capability&RC_BITBLT==RC_BITBLT

16,471

社区成员

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

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

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