Click here to Skip to main content
Click here to Skip to main content

Magnifying Cursor

By , 27 Jan 2003
Rate this:
Please Sign up or sign in to vote.

Introduction

This program generates a cursor that can magnify the portion on which it hovers.
I wrote this program to help myself make a small image editor. Using this code has made my program a very special one. Try it out.

Using the code

This program copies a part of the device context on to a bitmap. Stretches it and displays the bigger size.

This program uses three classes :-

  • CDib: This class can load DIBs from file and from resource and also save DIB to disk.
  • CBitmapDC: This class is derived from CDC. This class creates a bitmap from a given device context.
  • CMaskedBitmap: This class can draw a bitmap without displaying one specific colour.
//
void CMagnifierView::OnMouseMove(UINT nFlags, CPoint point) 
{
    SetCursor(AfxGetApp()->LoadCursor(IDC_CURSOR1));
    CPoint p = GetScrollPosition();
    CClientDC pdc(this);
    CMemDC dc(&pdc);
    m_dib.Draw(&dc, CPoint(-p.x, -p.y), m_dib.GetDimensions());
    CRect rect1(CPoint(0, 0), m_dib.GetDimensions());
    CRect sel;
    CMaskedBitmap* bitm;
    CMaskedBitmap* bit;
    if(rect1.PtInRect(point))
    {
        CRgn rgn1, rgn2;
        sel = CRect(point.x-(20*1), point.y-(20*1), 
                     point.x+(20*1), point.y+(20*1));
        CBitmapDC bitmap(40*1, 40*1, &dc);
        CBitmapDC bitmap2(120*1, 120*1, &dc);
        rgn1.CreateEllipticRgn(0, 0, 120, 120);
        rgn2.CreateRectRgn(0, 0, 120, 120);
        rgn1.CombineRgn(&rgn2, &rgn1, RGN_DIFF);
        int y = sel.top, x = sel.left;
        for(int i = y; i<y+(40*1);i++)
        {
            for(int j = x; j<x+(40*1); j++)
            {
                COLORREF color = dc.GetPixel(j, i);
                int red = GetRValue(color);
                int green = GetGValue(color);
                int blue = GetBValue(color);
                bitmap.SetPixel(j-x, i-y, color);
            }
        }
        bitm = bitmap.Close();
        CDC dcMem;
        dcMem.CreateCompatibleDC(&dc);
        dcMem.SelectObject(bitm);
        bitmap2.StretchBlt(0, 0, 120*1, 120*1, &dcMem, 
                                     0, 0, 40, 40, SRCCOPY);
        bitmap2.FillRgn(&rgn1, &CBrush(RGB(255, 0, 254)));
        bit = bitmap2.Close();
        dc.SelectObject(&CPen(PS_SOLID, 1, RGB(0, 0, 0)));
        dc.SelectObject(&CBrush(NULL, RGB(0, 0, 0)));
        dc.Ellipse(point.x-(60*1)-1, point.y-(60*1)-1, 
                          point.x+(60*1), point.y+(60*1));
        bit->DrawTransparent(&dc, point.x-(60*1), 
                         point.y-(60*1), RGB(255, 0, 254));
        dc.MoveTo(point.x, point.y-(60*1)-1);
        dc.LineTo(point.x, point.y-(10*1)+1);
        dc.MoveTo(point.x, point.y+(10*1)-1);
        dc.LineTo(point.x, point.y+(60*1)+1);
        dc.MoveTo(point.x-(60*1)-1, point.y);
        dc.LineTo(point.x-(10*1)+1, point.y); 
        dc.MoveTo(point.x+(10*1)-1, point.y);
        dc.LineTo(point.x+(60*1)+1, point.y); 
    }
    CScrollView::OnMouseMove(nFlags, point);
}
//

Points of interest

I like programming applications with very cool looks. Using this cursor, the looks of the programs have been enhanced. Even game programming can use this type of cursor with a bit of enhancement.

History

  • First update :- 27/01/2003 (Monday)

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Aniket Nayak

United States United States
No Biography provided

Comments and Discussions

 
QuestionWhy the put-downs? Pinmemberpensioner3065-Oct-04 23:35 
GeneralMemory Leak ! PinmemberMattthe cooldude24-Jan-04 17:01 
GeneralYou might enjoy this implementation... PinmemberMarc Clifton28-Jan-03 1:22 
GeneralRe: You might enjoy this implementation... PinsussYour worst nightmare31-Jan-03 5:41 
GeneralRe: You might enjoy this implementation... PinmemberMarc Clifton31-Jan-03 10:57 
GeneralRe: You might enjoy this implementation... PinsussPixiGreg4-Feb-03 8:07 
GeneralRe: You might enjoy this implementation... PinsussAnonymous10-Mar-03 19:26 
GeneralRe: You might enjoy this implementation... PinmemberYour worst nightmare20-Dec-03 20:13 
GeneralRe: You might enjoy this implementation... PineditorNishant S17-Jul-03 15:47 
GeneralRe: You might enjoy this implementation... PineditorMarc Clifton17-Jul-03 16:45 
GeneralRe: You might enjoy this implementation... PinmemberSolid Snake20-Dec-03 20:06 
GeneralRe: You might enjoy this implementation... PineditorMarc Clifton21-Dec-03 3:51 
GeneralRe: You might enjoy this implementation... PinmemberYou worst nightmare20-Dec-03 20:09 
GeneralRe: You might enjoy this implementation... PinmemberAnders Molin21-Dec-03 4:25 
How smart do you think you are?
LOL
 
- Anders
 
Money talks, but all mine ever says is "Goodbye!"
 
My Photos[^]
 
nsms@spyf.dk <- Spam Collecting Wink | ;)

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140421.2 | Last Updated 28 Jan 2003
Article Copyright 2003 by Aniket Nayak
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid