рджреГрд╢реНрдп C ++ рдореЗрдВ, рдХрд┐рд╕реА рдкреНрд░рдкрддреНрд░ рдкрд░ рдордирдорд╛рдиреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдЖрдк рдЪрд┐рддреНрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдЫрд╡рд┐ рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдпрд╛рдж рд╣реИ), рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рдЫрд╡рд┐ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдкрд░реЗ рдЬрд╛рддреА рд╣реИред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЫрд╡рд┐ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЛрдб рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рджреВрд╕рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╕реНрд░реЛрдд рдкрд╣рд▓реЗ рд╣реА рдЦреЛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд┐рдпрд╛ рдерд╛)ред
рд╡рд░реНрдЧ рдХреЛ CImageViewer рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ CWnd рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЫрд╡рд┐ m_image рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдореЗрдВ CImage рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИред рдпрд╣ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреА рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдХрдХреНрд╖рд╛ рдХреА рдореБрдЦреНрдп рд╡рд┐рдзрд┐рдпрд╛рдБ:
- рдЫрд╡рд┐ рд╕реНрдерд╛рдкрдирд╛: рд╢реВрдиреНрдп рд╕реЗрдЯрдЗрдореЗрдЬ (рд╕реАрдиреЗрдЬ * рдЫрд╡рд┐);
- рдЬрд╝реВрдо рдЗрди: рд╢реВрдиреНрдп рдЬрд╝реВрдо рдЗрди ();
- рдХрдо рдХрд░реЗрдВ: рд╢реВрдиреНрдп рдЬрд╝реВрдордСрдЙрдЯ ();
рд╢реЗрд╖ рд╡рд┐рдзрд┐рдпрд╛рдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИрдВред
рд╢реВрдиреНрдп рдкреЗрдВрдЯ () рдЫрд╡рд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕реНрдХреНрд░реЙрд▓ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдХрд╕реНрдЯрдо рдирд┐рдпрдВрддреНрд░рдг рдлрд╝реЙрд░реНрдо рдкрд░ рдлреЗрдВрдХреЗрдВ, рдХреНрд▓рд╛рд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ CImageViewer рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ CimageViewer рдХрд╛ рдПрдХ рдЗрдореЗрдЬ_ctrl рд╡реИрд░рд┐рдПрдмрд▓ рдЬреЛрдбрд╝реЗрдВ (ImageViewer.h рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ)ред рдЕрдЧрд▓рд╛, рдЯрд╛рдЗрдк рдХрд░реЗрдВ CImage рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП img, рдФрд░ CImageViewer :: SetImage рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
image_ctrl.SetImage(&img)
ZoomIn () / ZoomOut () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЬрд╝реВрдо рдЗрди рдФрд░ рдЖрдЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдиреЗ рдмрд╛рдПрдВ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ CImageViewer рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
class CMyImageViewer : public CImageViewer { public: //CMyImageViewer():CImageViewer(){} //~CMyImageViewer(){} DECLARE_MESSAGE_MAP() public: afx_msg void OnLButtonDown(UINT nFlags, CPoint point); CWnd* m_sxema; }; OnLButtonDown: void CMyImageViewer::OnLButtonDown(UINT nFlags, CPoint point) { int hp = GetScrollPos(SB_HORZ); int vp = GetScrollPos(SB_VERT); point.x = point.x + hp; point.y = point.y + vp; CWnd::OnLButtonDown(nFlags, point); }

рдкреБрдирд╢реНрдЪ: рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдЫрд╡рд┐ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдЕрднреА рднреА рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд░рдВрдЧ рд╡рд┐рдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рд╕реНрдХреНрд░реЙрд▓рдмрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред