回答: MSChart本 身 没 有 打 印 功 能 , 所 以 必 须 先 用 EditCopy将 图 像 放 在 剪 贴 板 中 , 然 后 再 打 印 , 如 下 : 
     MSChart1.EditCopy 
     Printer.Print " " 
     Printer.PaintPicture Clipboard.GetData(), 0, 0 
     Printer.EndDoc 此问题由李海 回答。 打印MsChart之类的控件
MsChart 之流的控件都没有提供一个直接打印的方法,使用 PrintForm 会把整个表单打出来,如果只要打印该控件, 方法是利用一个 PictureBox。
例如在 Form1 中有一个 MSChart1 和一个 Command1,增加一个 Picture1, 在Command1 的 Click 中增加下面的代码:
MSChart1.EditCopy
Picture1.Picture = Clipboard.GetData()
Printer.Print " "
Printer.PaintPicture Form2.Picture1.Picture, 0, 0
Printer.EndDoc
返回
我查了VB的用法,还有别的用法吗?赐教

解决方案 »

  1.   

    请问:MsChart能不能画工业控制中的实时曲线?
      

  2.   


    if (m_pMemDC->GetSafeHdc()) m_pMemDC->DeleteDC();
    m_pMemDC->CreateCompatibleDC(pDC); CClientDC dc(this);
    CRect rect;
    m_MsChart.GetClientRect(rect); m_pMemDC->SetMapMode(MM_ANISOTROPIC);
    m_pMemDC->SetWindowExt(dc.GetDeviceCaps(LOGPIXELSX),dc.GetDeviceCaps(LOGPIXELSY));
    m_pMemDC->SetViewportExt(m_pMemDC->GetDeviceCaps(LOGPIXELSX),m_pMemDC->GetDeviceCaps(LOGPIXELSY));
    if (m_pBm->GetSafeHandle()) m_pBm->DeleteObject();
    //m_pBm->CreateCompatibleBitmap(&dc,rect.Width(),rect.Height()); HBITMAP hBitmap;
    m_MsChart.EditCopy();
    OpenClipboard();
    hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);
    m_pMemDC->SelectObject(m_pBm->FromHandle(hBitmap));
    EmptyClipboard();
    CloseClipboard();

    dc.DPtoLP(rect); //Convert to Logical Coordinates
    m_rect = rect; //Save Logical Coordinates
    m_pMemDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
    现在基本上解决了。
    哪位有简便的方法?赐教