绘图时经常用到坐标范围设置,常常大家不理解坐标系统的建立。
诚然WINDOWS 的坐标系统比较容易把人搞晕,事实上我个人也容易写错。
现在发布一个可以方便转化成 OPENGL坐标系统 使用习惯的类,函数名也保持和 OPENGL相同。
如果你连OPENEL 坐标也不懂,那请查一下相关文档吧。
1
2 class CViewportWapper
3 {
4 public:
5 CViewportWapper( HDC hdc )
6 : hdc_( hdc )
7 {
8 }
9
10 void SetViewport( int left, int top, int width, int height)
11 {
12 view_left_ = left;
13 view_top_ = top;
14 view_width_ = width;
15 view_height_ = height;
16 }
17
18 void SetOrtho( int left, int right, int bottom, int top)
19 {
20 ::SetMapMode( hdc_, MM_ANISOTROPIC );
21
22 ::SetViewportOrgEx( hdc_, view_left_, view_top_, NULL );
23 ::SetViewportExtEx( hdc_, view_width_, view_height_, NULL);
24
25 ::SetWindowOrgEx( hdc_, left, top, NULL );
26 ::SetWindowExtEx( hdc_, right - left, bottom - top, NULL );
27 }
28
29 private:
30 HDC hdc_;
31 int view_left_, view_top_, view_width_, view_height_;
32 };