       

       Windows       
 .   ,  Windows   
 .     ,   
      .  ,   , 
         ,    
. ,    ,     
 ,        .   
       . 
     ,     ,    
   .  , ,   
  ,       
   .       
     . 

    213 

    ,           
  .    Windows  , ,  
,        . 

       

            ,    
   (.  8).  ,      
    (0,0),     . 
   ,    ,    
     ,  , 
  .       . 
     Windows      (current 
pointer),        
.         
(0,0).     , ..   
""   .       
,        . 

       

     Windows        
:  (brushes)   (pens).      
 8.        .   
  ,     ,  
     .   ,  
      ,   
 .        
;; .    , , . 
           .    : 
     . 

      

     Windows    API-.  MFC  
  CDC.      
  .  ,      
 ,        ,  
! .     . 

      

              
SetPixelQ,       * 
       : 

    COLORREF CDC::SetPixel(int X, int , COLORREF Color); 

    *   ,      ,      
.  . . 

    214                                    MFC:   

         "  ,      
Color.     ,    
,         
Color,    ,   .  
  (   ,    ) 
 -1. 
    :    ,  SetPixel(),  MFC 
  ,       
  POINT.    ,   
   . 

      

           LineTo().   
    .    : 

    BOOL CDC::LineTo(int X, int ); 

              (X, 
Y).         (X, Y).  
  (..,   )   
 ,     . 
      ,   LineToQ    
            
    ,      .   
 .   ,        
    .      
LineToQ   ,     
   .  ,   LineToO  
   MoveTo(),     . 

        

        MoveToQ   : 

    CPoint CDC::MoveTo(int X, int ); 

            Y.  
   ,      
CPoint,     POINT.    
 : 

    typedef struct tagPOINT 
    ( 
    LONG x; 
    LONG ; 
    ) POINT 


    9.                                                 215 


      

        ( )    
.    ().      
  : 

    BOOL CDC::Arc(int upX, int , int lowX, int lowY, 
    int startX, int startY, int endX, int endY) ; 

       . -,    , 
   .      
(upX,upY),     (lowX.lowY).   ,  
   (..  ),     
,         
(startX.startY),      ,   
      (endX,endY).    
 ,      (. 9.1).  () 
           . 


      

    . 9.1.     () 


      

          ,  
  Rectangle().       
 : 

    BOOL CDC::Rectangle(int UpX, int upY, int lowX, int lowY); 

           upX 
upY,        lowX  lowY.  
           
.        
 . 

    216 MFC:   

     RoundRectQ      
.   : 

    BOOL CDC::RoundRect(int upX, int upY, int lowX, int lowY, int curveX, int curveY); 

          Rectangle(). 
 curveX  curveY     ,   
   .     
        .  
       . 

        

     Ellipse()        
  .        : 

    BOOL CDC::Ellipse(int upX, int upY, int lowX, int lowY) ; 

          . 
        upX 
 upY,        lowX  lowY.  
   (  ),    
     .  EllipseQ 
           
.       . 
          .    , 
      ,       
.      Pie().   : 

    BOOL CDC::Pie(int upX, int , int lowX, int lowY, int startX, int 
startY, int endX, int endY) ; 

         ,     ().  
     .    Pie() 
   ,     . 
               
.  Pie()        
    . 

       

          .  MFC  
  .       1 
.     : ,    (.. 
).       CreateStockObjectO,  
 .      BLACK_PEN, 
WHITEJPEN  NULLJPEN, . 

    9.                                                 217 

    ,      , 
       .  
     ,     
CreatePenQ.     .     
 : 

    BOOL CPen::CreatePen(int StyJe, int Width, COLORREF Color); 

     Style    .    
     (. 9.1): 

     9.1.   

       

PSDASH 
PSDASHDOT
PSDASHDOTDOT
PSDOT 
PSJNSIDEFRAME 
PSNULL 
PSSOL1D	

  (  )
  (     )
  (   "--")
  (  ) 
 ,     
  
  

     /       , 
 ,  .  PS_INSIDEFRAME   
,          
  . ,  ,   PSJNSIDEFRAME  
  ,    ,   
        . 
(          
   .) 
           Width.   
  Color,   COLORREF (    8). 
         RGB(). 
     CreatePen()       
     . 
             
.       ,    
 : 

     (int StyJe, int Width, COLORREF Color}; 

          ,     CreatePenQ.  
   ()    CResourceException. 
        ,        
   Select0bject(). 

    218                                    MFC:   


       

        .    
 CBrush. 
       .    
 .      CreateSolidBrush(),  
  : 

    BOOL CBrush::CreateSolidBrush(COLORREF Color); 

        Color.    
         . 
     CBrush   ,     
       .  
  : 

    CBrush(COLORREF Color); 

            
    .     CBrush() 
   CResourceException. 
        ,       
    SelectObjectQ. 
          ,    
      ,     
 CBnisli::CreateHatcliBnish()  CBrush::CreatePatternBrush(), . 

        

        ,   ,   
     .      
,         
  .       
   |  DeleteObjectQ. ,    
 .  ,      (.. 
 )     . 

         

           , 
  .        
   ,    8.   
    ,     WMJPAINT 
   . (     
     .) 

    i 9.                                                 219 


        : 
    ; GRAPH.RC 
    #include <afxres.h> ftinclude "ids.h" 
    GraphicsMenu MENU ( 
    POPUP "Graphics Demo" ( 
    MENUITEM "&Lines\tF2", IDM_LINES 
    MENUITEM "&Rectangles\tF3", IDM_RECTANGLES 
    MENUITEM "&Ellipses\tF4", IDM_ELLIPSES 
    MENUITEM "&Reset\tF5", IDM_RESET 
    MENUITEM "E&xit\tF6", IDM_EXIT 
    } 
    MENUITEM "SHelp", IDM_HELP > 
    GraphicsMenu ACCELERATORS ( 
    VK_F2, IDM_LINES, VIRTKEY 
    VK_F3, IDM_RECTANGLES, VIRTKEY 
    VK_F4, IDM_ELLIPSES, VIRTKEY 
    VK_F5, IDM_RESET, VIRTKEY 
    VK_F6, IDM_EXIT, VIRTKEY 
    VK_F1, IDM_HELP, VIRTKEY } 

         IDS.H.      
,      . 

    // IDS.H 
    ftdefine IDM_LINES       100 
    #define IDM_RECTANGLES 101 
    ftdefine IDM_ELLIPSES    102 
    #define IDM_ENLARGE     103 
    ftdefine IDM_ORG         104 
    itdefine IDM_RESET       105 
    #define IDM_EXIT        106 
    #define IDM_HELP        107 

       GRAPH.H,    :  

    // GRAPH.H                                                           | 
    //       
    class CMainWin : public CFrameWnd                                   J 
    (                                                                          
                                                     I 
    CDC m memDC; //  ,                    ' 
    //   


    220                                     MFC:   


    CBitmap m bmp; //    
    CBrush m bkbrush; //     
    //   CPen m RedPen, m YellowPen, m GreenPen, m BluePen; 
    CPen m_01dPen; 
    public: 
    CMainWin () ; 
    afx_msg void OnPaintO; 
    afx_msg void OnLinesO; 
    afx_msg void OnRectangles(); 
    afx_msg void OnEllipses(); 
    afx msg void OnResetO; 
    afx_msg void OnExitO; 
    afx_msg void OnHelpO; 
    DECLARE_MESSAGE_MAP() 
    ); 
    //      
    class CApp : public CWinApp 
    ( 
    public: 
    BOOL Initlnstance (); 
    ); 

       : 

    //    
    ftinclude <afxwin.h> 
    tinclude "graph.h" 
    tinclude "ids.h" 
    int maxX, maxY; //   
    CMainWin::CMainWin () 
    ( 
    Create(NULL, "Demonstrate Graphics", 
    WS_OVERLAPPEDWINDOW, rectDefault, 
    NULL, "GraphicsMenu") ; 
    //     
    if('LoadAccelTable("GraphicsMenu")) 
    MessageBox("Cannot Load Accelerators", "Error"); 
    maxX = GetSystemMetrics(SM_CXSCREEN) ; 
    maxY = GetSystemMetrics(SM_CYSCREEN) ; 
    CClientDC DC(this); 


    9.                                                 221 


    //     
    m memDC.CreateCompatibleDC(&DC); 
    m_bmp.CreateCon-ipatibleBitmap (&DC, maxX, maxY); 
    m_memDC.SelectObject(&m_bmp) ; 
    //    
    m_bkbrush.CreateStockObject(WHITE_BRUSH) ; 
    m memDC.SelectObject(&m bkbrush); 
    //     
    m_memDC.PatBlt(0, 0, maxX, maxY, PATCOPY); 
    //   
    m_RedPen.CreatePen(PS_SOLID, 1, RGB(255, 0, 0)) ; 
    m_GreenPen.CreatePen(PS_SOLID, 2, RGB(0, 255, 0)); 
    m_BluePen.CreatePen(PS_SOLID, 3, RGB (, , 255)); 
    m_YellowPen.CreatePen<PS_SOLID, 4, RGB(255, 255, 0)) ; 
    m_01dPen.CreateStockObject(BLACK_PEN) ; 
    } 
    //   
    BOOL CApp::Initlnstance() 
    ( 
    m_pMainWnd = new CMainWin; 
    m_pMainWnd->ShowWindow(m nCmdShow) ; 
    m pMainWnd->UpdateWindow(); 
    return TRUE; 
    } 
    //     
    BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd) 
    ON_MM_PAINT() 
    ON_COMMAND(IDM_LINES, OnLines) 
    ON_COMMAND(IDM_RECTANGLES, OnRectangles) 
    ON_COMMAND(IDM_ELLIPSES, OnEllipses) 
    ON_COMMAND(IDM_RESET, OnReset) 
    ON_COMMAND(IDM_EXIT, OnExit) 
    ON_COMMAND(IDM_HELP, OnHelp) 
    END_MESSAGE_MAP() 
    //       
    afx rnsg void CMainWin : :OnPaint () 
    ( 
    CPaintDC DC (this) ; 
    DC.BitBlt(0, 0, maxX, maxY, &m_memDC, , , SRCCOPY) ; 
    } 
    //   IDM_EXIT 
    afx msg void CMainWin::OnExit() 
    { 
    int response; 
    response = MessageBox("Quit the Program?", "Exit", MB_YESNO) ; 


    222                                     MFC:   


    if (response == IDYES) 
    SendMessage (WM CLOSE); //   
    ) 
    //   IDM_HELP 
    afx msg void CMainWin::OnHelp () 
    f 
    MessageBox("Graphics Demo", "Help"); 
    ) 
    //     
    afx_msg void CMainWin::OnLines () 
    ( 
    //   
    m_memDC.SetPixel(40, 14, RGB (2 55, 0, 0)); 
    m_memDC.SetPixel(41, 14, RGB(0, 255, 0)); 
    m_memDC.SetPixel(42, 14, RGB(0, 0, 255)); 
    m_memDC.SetPixel(43, 14, RGB(0, 0, 0)) ; 
    mJnemDC.LineTo(100, 50); 
    m_iTiemDC. MoveTo (100, 50); 
    //      
    m mernDC.SelectObject(&m GreenPen) ; 
    m^memDC.LineTo(200, 1007; 
    //      
    m memDC.SelectObject(&m YellowPen); 
    m_memDC.LineTo(0, 200); 
    //      
    m memDC.SelectObject(&m BluePen) ; 
    m^memDC.LineTo (200, 200"; 
    //      
    m_memDC.SelectObject(&m_RedPen) ; 
    ra_memDC.LineTo(0, 0) ; 
    m_memDC.LineTo(100, 50); 
    m memDC.MoveTo (, ); 
    m^memDC.LineTo (100, 250); 
    m_memDC.MoveTo (0, 0) ; 
    m_memDC.LineTo (100, 350); 
    //    
    m_memDC.SelectObject(&m_01dPen) ; 
    m_memDC.Arc(, , 300, 300, 0, 50, 200, 0); 
    //  ,    
    m_memDC.MoveTo (150, 150); 
    m_mem.DC.LineTo (0, 50); 
    m_memDC.MoveTo (150, 150); 
    m_memDC.LineTo (200, 0) ; 


    9.                                                  223 


    InvalidateRect(NULL) ; 
    i 
    //   
    afx_msg void CMainWin::OnRectangles() 
    ( 
    CBrush HollowBrush; 
    //  ""  
    HollowBrush.CreateStockObject(HOLLOW_BRUSH) ; 
    m_memDC.SelectObject(&HollowBrush) ; 
    //    
    m__memDC.Rectangle(50, 50, 300, 300); 
    m_memDC.RoundRect(125, 125, 220, 240, 15, 13);                   ; 
    //    
    m_memDC.SelectObject(&m_RedPen) ; 
    m_memDC.Rectangle(100, 100, 200, 200); 
    m_memDC.SelectObject(&m_01dPen); //    
    //    
    m memDC.SelectObject(&m bkBrush); 
    InvalidateRect(NULL) ; 
    } 
    //   
    afx_msg void CMainMin::OnEllipses () 
    ( 
    CBrush Brush; 
    //    
    Brush.CreateSolidBrush(RGB(0, 0, 255)); 
    m niernDC . SelectObject (&Brush) ; 
    //  ,    
    ni_memDC.Ellipse(50, 200, 100, 280); 
    m_memDC.Ellipse(75, 25, 280, 100); 
    //    
    m memDC.SelectObject(&m RedPen) ; 
    //    
    Brush.DeleteObject (); //    
    Brush.CreateSolidBrush(RGB(0, 255, 0)); 
    m_memDC.SelectObject(&Brush); //    
    mJnemDC.Ellipse(100, 100, 200, 200); 
    //   
    m_memDC.Pie(200, 200, 340, 340, 225, 200, 200, 250); 
    m_memDC.SelectObject(&m_01dPen); //    
    m memDC.SelectObject(&m bkBrush); //    


    224                                     MFC:   


    InvalidateRect(NULL) ; 
    ) 
    //   
    afx_msg void CMainWin::OnReset() 
    ( 
    m_memDC.PatBlt(0, 0, maxX, maxY, PATCOPY); 
    InvalidateRect(NULL) ; 
    CApp App; //    

       ,        
,   .    ,    
      .   
   . 9.2. 

         

        ,   Windows     
   ,    .  
     Windows   
 (..  ).       
.        . 
    ,    . 
             
,       . -,  
      . -,  
    .     
 .   ,     .  
    ,    
,      .      
 CDC. 

       

           SetMapMode(), 
   : 
    virtual int CDC::SetMapMode(int Mode); 


    9.                                                 225 

    . 9.2.     


    226                                          MFC:   

     Mode          
 (. 9.2): 

     9.2.   

     	

MMANISOTROPIC
MMJ-HENGLISH 
MMHI METRIC 
MMJSOTROPIC
MMLO METRIC 
MMLOENGLISH 
MMTEXT 
MMJTWIPS
    ,  ,  
    .
    0,001 . 
    0,01 .
    ,  ,  
     . ( ,  
    .)
    0,1 . 
    0,01 . 
     .
    1/12  ,  
 1/1440 . 

     SetMapMode()      
 ,   . 
        _.   ,   
       . 
,         , 
      ,   MM_LOMETRIC. 
-,       , 
    ,     
. -,      (.. 
   ).  ,      
   Y*     ,     , 
   ,    Y. 
    :        
    (). 

       

       MM_ANISOTROPIC  MMJSOTROPIC   
     .  ,     
 ,       . (  
       ,   
      ,     
  .)         Y 
   SetWindowExt().      
  : 

    virtual CSize CDC::SetWindowExt(int Xextent, int Yextent} ; 

    *    ,         
.  . . 


    9,                                                 227 

     Xextent  Yextent      
    .      
   CSize (    SIZE).  
     MM_ANISOTROPIC  MM_ISOTROPIC. 
     ,        
   .   ,    
   . ( ,    
 ,  ,    
(),  .) ,        
  100100  5075.      
     . 

        

      ,      ,   
 .       
SetViewportExt().        : 

    virtual CSize CDC::SetViewportExt(int Xextent, int Yextent); 

     Xextentu Yextent      
    .     
.        MM_ANISOTROPIC  MMJSOTROPIC. 
         .     
    .      _  
   . 
           
( )    (),     
.       
        . 
   .  ,     
   .      
 . 

        

              (0,0). 
       SetViewPortOrgO,   
 : 

    virtual CPoint CDC::SetViewPortOrg(int X, int ) ; 

        ,   ,  
   .      , 
     CPoint,    POINT. 
             
 ,   . 

    228                                    MFC:   


             

            
   ,      , 
     .      . 
9.3.     MM_ANISOTROPIC,   200200  
    1010.      
  Magnify   Graphics Demo     
  10    ,    , 
  ,  .   Change Origin   
,        50      Y. 
           IDS.H,   . 
   : 

    ; VIEWPORT.RC 
    tinclude <afxres.h> 
    #include "ids.h" 
    GraphicsMenu MENU 
    ( 
    POPUP "Graphics Demo" 
    ( 
    MENUITEM "&Lines\tF2", IDM_LINES 
    MENUITEM "&Rectangles\tF3", IDM_RECTANGLES 
    MENUITEM "&Ellipses\tF4", IDM_ELLIPSES 
    MENUITEM "&Magnify\tF5", IDM_ENLARGE 
    MENUITEM "&Change Origin\tF6", IDM_ORG 
    MENUITEM "&Reset\tF7", IDM_RESET 
    MENUITEM "E&xit\tF8", IDM_EXIT 
    } 
    MENUITEM "SHelp", IDM_HELP 
    } 
    GraphicsMenu ACCELERATORS 
    ( 
    VK_F2, IDM_LINES, VIRTKEY 
    VK_F3, IDM_RECTANGLES, VIRTKEY 
    VK_F4, IDM_ELLIPSES, VIRTKEY 
    VK_F5, IDM_ENLARGE, VIRTKEY 
    VK_F6, IDM_ORG, VIRTKEY 
    VK_F7, IDM_RESET, VIRTKEY 
    VK_F8, IDM_EXIT, VIRTKEY 
    VK_F1, IDM_HELP, VIRTKEY > 

       V1EWPORT.H,    : 

    // V1EWPORT.H 
    //       
    class CMainWin : public CFrameWnd 

    9.                                                 229 

    ( 
    CDC m_rnemDC; //  ,   
    //   
    CBitmap m bmp; //    
    CBrush m_bkbrush; //     
    //   
    CPen m RedPen, m YellowPen, m GreenPen, m BluePen; 
    CPen m_OldPen; 
    int m vpX, m vpY; //    
    int m orgX, m orgY; //    
    public: 
    CMainWin() ; 
    afx msg void OnPaint(); 
    afx msg void OnLinesO; 
    afx msg void OnRectangles(); 
    afx_msg void OnEllipses () ; 
    afx msg void OnEnlargeO; 
    afx msg void OnOrgO; 
    afx_msg void OnResetO;                                            i
    afx msg void OnExitO;                                             ! 
    afx msg void OnHelp(); 
    DECLARE_MESSAGE_MAP() 
    b-                                                                         
                                             i 
    //                                       j 
    class CApp : public CWinApp 
    ( 
    public:                                                              | 
    BOOL Initlnstance ();                                                | };  
                                                                   I 
       :                                             j 
    //       
    ^include <afxwin.h> 
    ^include "viewport.h" 
    #include "ids.h" 
    int maxX, maxY; //   
    CMainWin::CMainWin() 
    ( 
    Create(NULL, "Viewports and Mapping Modes", 
    WSJ3VERLAPPEDWINDOW, rectDefault, 
    NULL, "GraphicsMenu") ; 
    //     


    230                                     MFC:   


    if('LoadAccelTable("GraphicsMenu")) 
    MessageBox("Cannot Load Accelerators", "Error"); 
    maxX = GetSystemMetrics(SM_CXSCREEN) ; 
    maxY = GetSystemMetrics(SM_CYSCREEN) ; 
    CClientDC DC(this) ; 
    //     
    m_memDC.CreateCompatibleDC(&DC) ; 
    m_bmp.CreateCompatib-LeBitmap (&DC, maxX, maxY); 
    m_memDC.SelectObject(&m_bmp) ; 
    //    
    m_bkbrush.CreateStockObject(WHITE_BRUSH) ; 
    m_memDC.SelectObject(&m_bkbrush); 
    //     
    m_memDC.PatBlt(0, 0, maxX, maxY, PATCOPY) ; 
    //   
    m_RedPen.CreatePen(PS_SOLID, I, RGB(255, 0, 0) ) ; 
    m_GreenPen.CreatePen(PS_SOLID, 2, RGB(0, 255, 0) ) ; 
    m_BluePen.CreatePen(PS_SOLID, 3, RGB(0, 0, 255)); 
    m_YellowPen.CreatePen(PS_SOLID, 4, RGB(255, 255, 0)); 
    m_01dPen.CreateStockObject(BLACK_PEN) ; 
    //     
     vpX = m vpY = 10; 
    n'l orgX = m orgY = 0; 
    } 
    II   
    BOOL CApp::Initlnstance () 
    ( 
    m_pMainWnd = new CMainWin; 
    m_pMainWnd->ShowWindow(m_nCmdShow) ; 
    m pMainWnd->UpdateWindow() ; 
    return TRUE; 
    ) 
    //     
    BEGIN_MESSAGE_MAP(CMainWin, CFrameWnd) 
    ON_WM_PAINT () 
    ON_COMMAND(IDM_LINES, OnLines) 
    ON_COMMAND(IDM_RECTANGLES, OnRectangles) 
    ON_COMMAND(IDM_ELLIPSES, OnEllipses) 
    ON_COMMAND(IDM_ENLARGE, OnEnlarge) 
    ON_COMMAND(IDM_ORG, OnOrg) 
    ON_COMMAND(IDM_RESET, OnReset) 
    ON_COMMAND(IDM_EXIT, OnExit) 


    9.                                                 231 


    ON_COMMAND(IDM_HELP, OnHelp) 
    END_MESSAGE_MAP() 
    //       
    afx msg void CMainWin::OnPaint() 
    ( 
    CPaintDC DC(this) ; 
    //   ,      
    DC.SetMapMode(MM_ANISOTROPIC) ; 
    DC.SetWindowExt(200, 200); 
    DC.SetViewportExt(m_vpX, m_vpY) ; 
    DC.SetViewportOrg(m_orgX, m_orgY) ; 
    DC.BitBlt(0, 0, maxX, maxY, &m_memDC, , , SRCCOPY); 
    } 
    //   IDM_EXIT 
    afx_msg void CMainWin::OnExit() 
    ( 
    int response; 
    response = MessageBox("Quit the Program?", "Exit", MB_YESNO); 
    if (response == IDYES) 
    SendMessage(WM_CLOSE); //   
    } 
    //   IDM HELP 
    afx msg void CMainWin :: OnHelp () 
    { 
    MessageBox("Graphics Demo", "Help"); 
    } 
    //     
    afx_msg void CMainWin::OnLines () 
    ( 
    //   
    m_memDC.SetPixel(40, 14, RGB(255, 0, 0) ) ; 
    m_memDC.SetPixel(41, 14, RGB(0, 255, 0) ) ; 
    m_memDC.SetPixel(42, 14, RGB(0, 0, 255)); 
    m_memDC.SetPixel(43, 14, RGB(0, 0, 0) ) ; 
    m_memDC.LineTo(100, 50); 
    m_memDC.MoveTo(100, 50); 
    //      
    m memDC.SelectObject(sm GreenPen); 
    m_memDC.LineTo(200, 100); 
    //      
    m_memDC.SelectObject(&m_YellowPen) ; 
    m_memDC.LineTo(0, 200); 


    232                                    MFC:   


    //      
    m_rnemDC. SelectObject (&m_BluePen) ; 
    m_memDC.LineTo(200, 200); 
    //      
    m_memDC.SelectObject(?m RedPen); 
    m_memDC.LineTo(0, 0);  
    m_memDC.LineTo(100, 50); 
    m_memDC.MoveTo(0, 0) ; 
    m_inemDC. LineTo (100, 250); 
    m_memDC.MoveTo(0, 0) ; 
    m_memDC.LineTo(100, 350); 
    //    
    m_niemDC.SelectObject(&m_01dPen) ; 
    m_memDC.Arc(, , 300, 300, 0, 50, 200, 0) ; 
    //  ,    
    m_memDC.MoveTo(150, 150); 
    m_memDC.LineTo(0, 50); 
    m_memDC.MoveTo(150, 150); 
    m_meinDC. LineTo (200, 0) ; 
    InvalidateRect (NULL) ; 
    } 
    //   
    afx msq void CMainWin: :OnRect.anqles ()  
    ( 
    CBrush HollowBrush; 
    //  ""  
    HollowBrush.CreateStockObject(HOLLOW_BRUSH) ; 
    m_memDC.SelectObject(sHollowBrush) ; 
    //    
    m_niemDC. Rectangle (50, 50, 300, 300); 
    m_memDC.RoundRect(125, 125, 220, 240, 15, 13); 
    //    
    m_[nemDC. SelectObject (&m_RedPen) ; 
    m_memDC.Rectangle(100, 100, 200, 200); 
    m memDC.SelectObject(&m OldPen); //    
    //    
    m memDC.SelectObject(&m bkBrush) ; 
    InvalidateRect(NULL) ; 
    ) 
    //   
    afx msg void CMainWin::OnEllipses() 
    ( 


    9.                                                 233 


    CBrush Brush; 
    //    
    Brush.CreateSolidBiush(RGB(, , 255)); 
    m_memDC.SelectObject(SBrush) ; 
    //  ,    
    m_memDC.Ellipse (50, 200, 100, 280); 
    m_mernDC. Ellipse (75, 25, 280, 100); 
    //    
    m_memDC.SelectObject(&m_RedPen) ; 
    //    
    Brush.DeleteObject (); //    
    Brush.CreateSolidBrush(RGB(0, 255, 0)) ; 
    m memDC.SelectObject(bBrush); //    
    m_memDC.Ellipse(100, 100, 200, 200); 
    //   
    m_memDC.Pie(200, 200, 340, 340, 225, 200, 200, 250); 
    ni_memDC.SelectObject(&m_01dPen); //    
    m_memDC.SelectObject(&m_bkBrush); //    
    InvalidateRect(NULL) ; 
    ) 
    //   
    afx msg void CMainWin::OnEnlarge() 
    { 
    m_vpX +=10; 
    in_vpY +=10; 
    InvalidateRect(NULL) ; 
    ) 
    //      
    afx msg void CMainMin::0n0rg() 
    { 
    m_orgX +=50; 
    m_orqY +=50; 
    InvalidateRect(NULL) ; 
    ) 
    //        
    afx_msg void CMainWin::OnReset() 
    ( 
    m vpX = m vpY = 10; 
    m__orgX = m_orgY = 0; 
    m_memDC.PatBlt(0, 0, maxX, maxY, PATCOPY) ; 
    InvalidateRect(NULL) ; 
    ) 
    CApp App; //    


    234                                     MFC:   


    . 9.3.         
  

    9.                                                          235 
