现在问题是有一图形 彩色喷墨能打,但激打不行??不知道什么原因?代码如下:
void CRzbxUsbView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{
// use Textmappingmode, that's easiest to map the fontsize
pDC->SetMapMode(MM_TEXT);
    // setup font specifics
    LOGFONT LogFont;
    CFont aFont, *oldFont;
    LogFont.lfHeight = -MulDiv(11, pDC->GetDeviceCaps(LOGPIXELSY), 72);
    LogFont.lfWidth = 0;
    LogFont.lfEscapement = 0;
    LogFont.lfOrientation = 0;
    LogFont.lfWeight = 0;
    LogFont.lfItalic = false;
    LogFont.lfUnderline = 0;
    LogFont.lfStrikeOut = 0;
    LogFont.lfCharSet = ANSI_CHARSET;
    LogFont.lfOutPrecision = OUT_TT_PRECIS;
    LogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
    LogFont.lfQuality = DEFAULT_QUALITY;
    LogFont.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
    lstrcpy (LogFont.lfFaceName, "宋体");
    aFont.CreateFontIndirect ( &LogFont );
    oldFont = pDC->SelectObject( &aFont ); 
//print title
if(nCfgDyfx == 1)
y=100;
else if(nCfgDyfx == 0)
y = 0;
else
y = 0;
PrintTitle(pDC,&y,pInfo);
OnDraw(pDC);
y+=nDrawHeight-5;
if(nAcqCurveNo>1)
// PrintCorrPara(pDC,&y,pInfo);
PrintRxy(pDC,&y,pInfo);
//print transformer name plate
PrintTransNamePlate(pDC,&y,pInfo);
y+=m_nPrintCharHeight;
//print test setting
for(int i=1;i<=nAcqCurveNo;i++)
{
PrintTestSet(pDC,&y,pInfo,i);
}
// PrintConclusion(pDC,&y,pInfo);
PrintPageFooter(pDC,pInfo); pDC->SelectObject(oldFont);
}
void CRzbxUsbView::OnDraw(CDC* pDC) 
{
CRzbxUsbDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc); CBitmap *pOldBitmap=m_pMemDC->SelectObject(m_pBitmap);
if(pDC->IsPrinting())
{
// double ratio=nPrintPageWidth/rect.Width();
if(nCfgDyfx==1)
{
nDrawHeight=(int)(nPrintPageWidth*1.5*rect.Height()/rect.Width());
}
else
{
nDrawHeight=(int)(nPrintPageWidth*0.75*rect.Height()/rect.Width());
}
pDC->StretchBlt(nPrnLeftBorder,y,(int)(nPrintPageWidth*rect.Width()/rect.Width()),nDrawHeight,m_pMemDC,0,0,rect.Width()-2,rect.Height()-2,SRCCOPY);
}
else
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),m_pMemDC,0,0,SRCCOPY);
m_pMemDC->SelectObject(pOldBitmap);
}

解决方案 »

  1.   

    你的激打可能是PostScript打印机语言的,而喷墨打印机是普通的GDI打印机
    前者可能存在兼容性问题,
    尝试安装厂商最新驱动
      

  2.   

    pDC->StretchBltpDC->BitBlt怎么老犯这种错误?记住这是给设备兼容位图用的,你的BitMap和打印机的设备不兼容!请把位图转换成为设备无关位图,然后用StretchDIBits就没问题了,有问题你过来找我:)