深夜睡不着看书(CP的windows程序设计)看卡到了。求围观下。 本帖最后由 fengchen2195 于 2012-04-09 02:58:01 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://topic.csdn.net/u/20110106/17/aed68793-a901-44ae-af4e-cc7716c77068.html 先不说windows就说坐标映射其实最基本就是两个问题1、原点在哪2、逻辑单位设定以800,600的屏幕为例默认原点在左上角逻辑单位是像素如果你要把图形画在屏幕中间图形的中心坐标就是400,300如果改变这种映射模式我们把原点设置在400,300的位置那么你要把图形输出在中心你得绘制坐标就是0,0基本上就是这个意思理论的东西相信你已经很了解了我就不班门弄斧了 SetViewportOrg和 SetWindowOrg都是基于物理设备坐标原点来设置视囗或窗囗的原点,只是SetViewportOrg使用的是设备单位,而SetWindowOrg使用的是逻辑单位;不论视囗和窗囗原点如何设置物理设备原点是固定不变的,并且窗囗原点最终会映设到视囗原点;窗囗映射到视囗其实就是将窗囗坐标转为视囗坐标,其转换过程可用窗囗转视囗的公式表示; 简单点就是原点设到什么位置,它就在什么位置。这个两个 函数一个设置窗囗原点,一个设置视囗原点,,设置之后,窗囗和视囗的原点就不在一起了,只是在映射时总是将窗囗原点映射到视囗原点而已。 映射时要通过公式进行一些运算,,并不是简单的将窗囗原点挪到视囗原点。。其公式如下:xdevice=(xpage-窗口原点x) * 视口范围x / 窗口范围x+视口原点x;ydevice=(ypage-窗口原点y) * 视口范围y / 窗口范围y+视口原点y;通常说的设备坐标指的就是视囗坐标,,逻辑坐标指的就是窗囗坐标。物理设备坐标就是永远不会被移动的那个设备坐标; SetWindowOrgEx (hdc, cxDib / 2, cyDib / 2, NULL) ;是设置窗口的起始位置,也就是将窗口的起始位置调整到图片的中央去SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;是设置视口的其实位置,也就是将视口的起始位置调整到客户区的中央去 SetViewportOrgEx()函数是客户区不动,原点坐标移动。SetWindowsOrgEx()函数是原点坐标不动,客户区移动。实在不懂,我这里有代码,可以演示给你看 http://blog.csdn.net/xizero00/article/details/7442005这个是刚写的关于他们的区别 请教一个问题,在view中拉动滚动条,CDC画得和该view的子窗口移动问题 关于编辑框显示系统时间并可更新 XML解析,释放试内存泄漏 散分,為了一起學習的朋友們,以及幫助我的哥們. 想删除指定的视图,却删不掉,怎么办?急 出血者问题: VC++中的图标怎样删除(例如16*16,32*32,4色,16色,256色,全保留是否有影响,如果只保留4色的怎样删除)? 8848.com 高薪招聘VC/MFC程序员 广州天河区,三房一厅,求合租! 求助,急!!runtime erroe! 开了/EHa编译选项,并没有生成汇编级别的保护代码,为何? sf
就说坐标映射
其实最基本就是两个问题
1、原点在哪
2、逻辑单位设定
以800,600的屏幕为例
默认原点在左上角
逻辑单位是像素
如果你要把图形画在屏幕中间
图形的中心坐标就是400,300
如果改变这种映射模式
我们把原点设置在400,300的位置
那么你要把图形输出在中心
你得绘制坐标就是0,0
基本上就是这个意思
理论的东西相信你已经很了解了
我就不班门弄斧了
窗囗映射到视囗其实就是将窗囗坐标转为视囗坐标,其转换过程可用窗囗转视囗的公式表示; 简单点就是原点设到什么位置,它就在什么位置。这个两个 函数一个设置窗囗原点,一个设置视囗原点,,设置之后,窗囗和视囗的原点就不在一起了,只是在映射时总是将窗囗原点映射到视囗原点而已。 映射时要通过公式进行一些运算,,并不是简单的将窗囗原点挪到视囗原点。。其公式如下:
xdevice=(xpage-窗口原点x) * 视口范围x / 窗口范围x+视口原点x;
ydevice=(ypage-窗口原点y) * 视口范围y / 窗口范围y+视口原点y;
通常说的设备坐标指的就是视囗坐标,,逻辑坐标指的就是窗囗坐标。物理设备坐标就是永远不会被移动的那个设备坐标;
是设置窗口的起始位置,也就是将窗口的起始位置调整到图片的中央去
SetViewportOrgEx (hdc, cxClient / 2, cyClient / 2, NULL) ;
是设置视口的其实位置,也就是将视口的起始位置调整到客户区的中央去
SetWindowsOrgEx()函数是原点坐标不动,客户区移动。
实在不懂,我这里有代码,可以演示给你看
这个是刚写的关于他们的区别