对Windows中定义视口和窗口不是很明白,为什么要定义两个?
对设置视口原点,窗口原点,视口范围,窗口范围不懂文字显示是在视口还是窗口?
比如说SetViewOrgEx(hdc,cxClient/2,cyClient/2,NULL);
SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);
书上说这两个语句意味着逻辑点(-cxClient/2,-cyClient/2)将映射为设备点(cxClient/2,cyClient/2)不懂它是怎么映射过来的,请高手解答下。。
对设置视口原点,窗口原点,视口范围,窗口范围不懂文字显示是在视口还是窗口?
比如说SetViewOrgEx(hdc,cxClient/2,cyClient/2,NULL);
SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);
书上说这两个语句意味着逻辑点(-cxClient/2,-cyClient/2)将映射为设备点(cxClient/2,cyClient/2)不懂它是怎么映射过来的,请高手解答下。。
解决方案 »
- VC6升级到VS2008 如何添加 修改应用程序外观功能?
- 谁能提供BoundsChecker下载地址要能兼容win7 vs2010 x64位程序的
- RichEdit 部分颜色问题
- 我想在windows下装freetype,怎么装不上??
- visual c++ 开发答疑300问这书谁卖啊.
- vc 6.0 中,使用水晶报表,怎样传递参数????????
- 诶~我的vc刚刚能装上,编译还是不能用。错误“Error spawning cl.exe”
- 如何结束进程啊?
- 新学的MFC与opencv,想做个实时处理图像,但是延迟好高呀,求大神给优化下代码
- VS 2017 MFC 使用 CRichEdit 后编译报错
- 编辑框里添加背景图片,可以吗
- 如何用API做Windows 的窗口
Rectangle ( hdc , 0, 0 , 400, 300 );
在以逻辑单位为0.01mm时,绘制的就是一个 4mm × 3mm的矩形,而在以0.01英寸为单位时,绘制的就是:4英寸×3英寸的矩形。
视口(Viewport)则是基于设备坐标(象素)的。而通常,视口和窗口的客户区是相同的,而且在视口坐标系中,客户区的左上角的坐标是(0,0),且X轴向右增加,Y轴向下增加。
SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);这两个函数则是确定“窗口”到“视口”映射关系的函数,一般来说,不同时使用,只使用一个即可。第一个函数,则是指定了“窗口”中的原点映射到视口的(cxClient/2,cyClient/2)!
第二个函数则是指定“窗口”中的点(-cxClient/2,-cyClient/2)映射到视口的原点!
SetWindowOrgEx(hdc,-cxClient/2,-cyClient/2,NULL);
这两个语句一起使用意味着逻辑点(-cxClient/2,-cyClient/2)将映射为设备点(cxClient/2,cyClient/2),它是怎么映射过来的,依据
第一个函数,则是指定了“窗口”中的原点映射到视口的(cxClient/2,cyClient/2)!
第二个函数则是指定“窗口”中的点(-cxClient/2,-cyClient/2)映射到视口的原点!这个函数的意义是怎么映射过来的
Y比例因子=Y视口/Y窗口;
设备X=逻辑X*X比例因子+X坐标原点偏移量;
设备Y=逻辑Y*Y比例因子+Y坐标原点偏移量;