永发信息网

vc中如何把窗口坐标系转为笛卡尔坐标系

答案:1  悬赏:50  手机版
解决时间 2021-07-24 23:53
vc中如何把窗口坐标系转为笛卡尔坐标系
最佳答案

他的好处是窗口中的每一点坐标不会随着窗口的大小而改变,即你改变窗口时窗口中的图形不会改变.函数1:模式选择int SetMapMode( __in HDC hdc, __in int fnMapMode );fnMapMode可传入MM_TEXT,MM_ISOTROPIC,MM_ANISOTROPIC等参数函数2:设置新的高度和宽度BOOL SetWindowExtEx( __in HDC hdc,//设备环境句柄 __in int nXExtent,//新的宽度(如果为MM_ISOTROPIC则nXExtent和nYExtent必须相等) __in int nYExtent,//新的高度 __out LPSIZE lpSize//用于返回原来的大小,不需要设为NULL );不管真实的窗口区域大小是多少,该函数告诉windows窗口的逻辑宽是nXExtent,逻辑高度是nYExtent.windows会将DC代表的区域的宽度nXExtent等分,每份的长度就是X方向上的单位长度,将高度nYExtent等分得到y轴上的单位长度函数3:设置x,y坐标轴的方向和坐标轴的范围,即定义域和值域BOOL SetViewportExtEx( __in HDC hdc,//设备环境句柄 __in int nXExtent,//新的宽度(以像素为单位,定义域) __in int nYExtent,//新的高度(以像素为单位,值域) __out LPSIZE lpSize//用于返回原来的大小,不需要设为NULL);要想坐标系包含整个区域,直接把区域的真实大小传递给此函数即可.参数nXExtent和nYExtent为正表示与默认坐标系方向相同,即向右向下为X,Y的正方向,为负表示与默认方向相反函数4:设置坐标系的原点坐标BOOL SetViewportOrgEx( __in HDC hdc, __in int X,//原点横坐标 __in int Y,//原点纵坐标 __out LPPOINT lpPoint );演示代码1:画内切与客户区的圆(坐标系不变)case WM_PAINT: RECT rt; int cx,cy; GetClientRect(hWnd,&rt); hdc = BeginPaint(hWnd, &ps); cx = rt.right; cy = rt.bottom; //设置客户区的逻辑大小为500*500,原点为(0,0) SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx(hdc,500,500,NULL); SetViewportExtEx(hdc,cx,cy,NULL); //SetViewportOrgEx(hdc,cx/2,cy/2,NULL); SetViewportOrgEx(hdc,0,0,NULL); //MoveToEx(hdc,0,0,NULL); //LineTo(hdc,-200,-200); Ellipse(hdc,0,0,500,500); EndPaint(hWnd, &ps); break; 画出的圆会随着边框的改变而改变演示代码2:笛卡尔坐标系下画圆case WM_PAINT: RECT rt; int cx,cy; GetClientRect(hWnd,&rt); hdc = BeginPaint(hWnd, &ps); cx = rt.right; cy = rt.bottom; //设置客户区的逻辑大小为500*500,原点为中点 SetMapMode(hdc,MM_ISOTROPIC); SetWindowExtEx(hdc,500,500,NULL); SetViewportExtEx(hdc,cx,-cy,NULL); //设置坐标轴方向 SetViewportOrgEx(hdc,cx/2,cy/2,NULL);//设置原点 //SetViewportOrgEx(hdc,0,0,NULL); //MoveToEx(hdc,0,0,NULL); //LineTo(hdc,-200,-200); Ellipse(hdc,-250,250,250,-250); //画圆 EndPaint(hWnd, &ps); break; 注意;如果选择MM_ANISOTROPIC则会画出椭圆


我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
网上银行汇钱买手机被骗能否拿回钱来?
足坛里“人妖”详细资料
女孩子吃糖吃多了会长胖吗?
怎么创车队挑战房间
烽火战国如何升级
日本歌手绚香(Ayaka)的博客
魔域神兽骑乘十星后是不是每个地区都能骑 那
求P图 把图中加几个字
又到村中打一字,又到村里 打一字
我嘴上起了些小泡,怎么办?你能告诉我吗?谢
谁告诉我这首歌曲的名字??
一顿饭三块钱,菜还行,饭真难吃。不知道怎么
有谁知道杨德龙?
求下列极限,谢谢!(明天要考试了紧急求助)
关于内审的相关问题
推荐资讯
什么样的女人才是好的女人?
黄钻进了农场根本就没有了那个礼物包!怎么了
爱护书籍的标语大全,20句关于书的名言警句。
hear my voice
为什么脸会暗黄
油脂性皮炎会掉头发吗
华夏20级一下的装备在那里有卖的
好听dj谁有,
爸爸___说:“你的计算题怎么又错了?”
★移动139邮箱怎样获得天气邮件?
哪里有 带有博客的 论坛源码 ? 谢谢了
有什么动画和《Fate》《武器种族传说》一样好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?