Magnifying Glass – demonstrates different ways to obtain or create proper DC and use BitBlt – StretchBlt functions

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

Environment:VC5/VC6

Generally the sample demonstrates different ways to obtain or create proper DC and
use BitBlt – StretchBlt functions.

It is another ZoomIn demo application created with doc-view architecture.
CView derived class experienced minimum changes from AppWizard generated one.

CImageWnd window covers CView derived class window.
CImageWnd contains a copy (mirror) of CView derived class window bitmap to draw. CImageWnd window
becomes transparent when magnifying glass is inactive and draws a “lens” over the bitmap when active.
The “lens” is a small zoom window. Magnifying Glass doesn’t depend on a view contents.
It is easy to modify CMgnView::OnDraw or CMgnView::OnEraseBkgnd and Magnifying Glass still will work with
another contents.

To activate or deactivate magnifying glass – press button on a toolbar.

To magnify a portion of a view – activate magnifying glass, press left mouse button and move “lens” around a view.

To change magnifying glass size, shape or zoom – activate magnifying and click a view with right mouse button.
It is possible to create several views just use file – new command.
Note that for each view magnify glass keeps its own properties.

It is easy enough to make a “lens” astigmatic (cylinder) or add another “optical effects”.

I couldn’t remove some “optical side effects”. When magnifying glass is slowly moved from outside a
frame inside it over a border you see a “diffraction grid”.

Download source – 27 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read