下载源码:
http://www.codeguru.com/doc_view/zoom_scale.zip将OnDraw(CDC* pDC)改成你的就可以了。你要的就是CZoomView类

解决方案 »

  1.   

    if (!pDC->IsPrinting())
    {
    // draw to offscreen bitmap for fast looking repaints
    if (dc.CreateCompatibleDC(pDC))
    {
    if (bitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height()))
    {
    OnPrepareDC(&dc, NULL);
    pDrawDC = &dc; // offset origin more because bitmap is just piece of the whole drawing
    dc.OffsetViewportOrg(-rect.left, -rect.top);
    pOldBitmap = dc.SelectObject(&bitmap);
    dc.SetBrushOrg(rect.left % 8, rect.top % 8); // might as well clip to the same rectangle
    dc.IntersectClipRect(client);
    }
    }
    } // paint background
    CBrush brush;
    if (!brush.CreateSolidBrush(pDoc->GetPaperColor()))
    return; brush.UnrealizeObject();
    pDrawDC->FillRect(client, &brush); if (!pDC->IsPrinting() && m_bGrid)
    DrawGrid(pDrawDC); pDoc->Draw(pDrawDC, this); if (pDrawDC != pDC)
    {
    pDC->SetViewportOrg(0, 0);
    pDC->SetWindowOrg(0,0);
    pDC->SetMapMode(MM_TEXT);
    dc.SetViewportOrg(0, 0);
    dc.SetWindowOrg(0,0);
    dc.SetMapMode(MM_TEXT);
    pDC->BitBlt(rect.left, rect.top, rect.Width(), rect.Height(),
    &dc, 0, 0, SRCCOPY);
    dc.SelectObject(pOldBitmap);
    }