正在加载图片...
第10单元图形设备接口 如果用户在窗口客户区移动鼠标或按下鼠标按键,就会得到鼠标位置的设备坐标。在使 用该数据绘图时,需要将其转化为逻辑坐标。CDC类提供了两个成员函数 LPtoDP()和 DPtoLP()完成逻辑坐标和设备坐标之间的转换工作,其中 LPtoDP用于将逻辑坐标转换为 设备坐标,而 DPtoLP()用于将设备坐标转换为逻辑坐标 void LPtoDP( LPPOiNT lpPoints, int n Count =1)const void LPtoDP( LPRECT lpRect )const yoid DPtoLP( LPPOINT lp Points, int n Count=1)const void DPtoLP( LPRECT lpRect )const 但如果采用 MM TEXT的映射模式,设备坐标和逻辑坐标一致,就无需转换了。第9单元 的例题程序均如此 例10-1在窗口中显示一个椭圆,并用鼠标切换该椭圆的图形参数。 说明:建立项目的方法见98:“用 Visual c++集成开发环境开发Wn32应用程序 程序: ∥/ Example10-1:用鼠标切换图形参数 #include <afxwin. h> /框架窗口类 class CMy Wnd: public CFrameWnd int m color CRect m rectEllipse: public CMy Wndo protected fx msg void OnPaint o afx msg void OnLButtonDown (UINT nFlags, CPoint point) DECLARE MESSAGE MAP O //消息映射 BEGIN MESSAGE MAP(CMyWnd, CFrameWnd ON WM PAINTO ON WM LBUTTONDOWN O END MESSAGE MAP O /框架窗口类的成员函数 CMyWnd: CMyWndO: m rectEllipse(100, 100, 300, 250) m cOlor o void CMyWnd: OnPaint o第 10 单元 图形设备接口 - 199 - 如果用户在窗口客户区移动鼠标或按下鼠标按键,就会得到鼠标位置的设备坐标。在使 用该数据绘图时,需要将其转化为逻辑坐标。CDC 类提供了两个成员函数 LPtoDP()和 DPtoLP()完成逻辑坐标和设备坐标之间的转换工作,其中 LPtoDP 用于将逻辑坐标转换为 设备坐标,而 DPtoLP()用于将设备坐标转换为逻辑坐标: void LPtoDP ( LPPOINT lpPoints, int nCount = 1 ) const; void LPtoDP ( LPRECT lpRect ) const; void DPtoLP ( LPPOINT lpPoints, int nCount = 1 ) const; void DPtoLP ( LPRECT lpRect ) const; 但如果采用 MM_TEXT 的映射模式,设备坐标和逻辑坐标一致,就无需转换了。第 9 单元 的例题程序均如此。 [例 10-1] 在窗口中显示一个椭圆,并用鼠标切换该椭圆的图形参数。 说 明:建立项目的方法见 9.8:“用 Visual C++集成开发环境开发 Win32 应用程序”。 程 序: // Example 10-1: 用鼠标切换图形参数 #include <afxwin.h> // 框架窗口类 class CMyWnd: public CFrameWnd { int m_nColor; CRect m_rectEllipse; public: CMyWnd(); protected: afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); DECLARE_MESSAGE_MAP() }; // 消息映射 BEGIN_MESSAGE_MAP(CMyWnd,CFrameWnd) ON_WM_PAINT() ON_WM_LBUTTONDOWN() END_MESSAGE_MAP() // 框架窗口类的成员函数 CMyWnd::CMyWnd():m_rectEllipse(100,100,300,250) { m_nColor = 0; } void CMyWnd::OnPaint() {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有