【发布时间】:2012-01-10 04:15:28
【问题描述】:
如何将窗口中的坐标从左上角 0,0 更改为左下角 0,0。
我尝试了各种解决方案SetMapMode(hdc,MM_TEXT);,SetViewportExtEx(hdc,0,-clientrect.bottom,NULL);SetViewPortOrgEx(hdc,0,-clientrect.bottom,NULL);SetWindowOrgEx(hdc,0,-clientrect.bottom,NULL);SetWindowExtEx(hdc,0,-clientrect.bottom,NULL);
我什至尝试 google 寻求解决方案,但没有成功,所以我求助于互联网上更有经验的人。
我的想法是我正在为线性插值创建一个自定义控件,我可以通过右上角的 x,y 反转坐标系,但我希望它是正确的。目前,当我尝试绘制它时,我得到了一个反向线性插值,因为我无法让坐标位于左下角。
我正在使用 win32 api,我怀疑我可以跳过代码,因为屏幕坐标系在所有系统上几乎相同,我的意思是 0,0 是“始终”在屏幕上的左上角,如果你保留它到标准的二维窗口和框架。
我真的不想要一个完整的代码示例来减轻你们打字的痛苦,但我想要一些方向,因为我似乎无法掌握在 win32 api 中翻转坐标的简单概念。
谢谢,圣诞快乐
编辑!
我想为这个问题添加我自己的答案,因为我使用简单的数学来反转观点。
例如,如果我得到了值对 x,y (150,57) 和另一对 x,y (100,75),那么我使用了这个公式 height + (-1 * y),瞧,我得到了一个正确的笛卡尔坐标字段 :) 当然在此示例中,高度是未定义的变量,但在我的应用程序中,其高度为 200 像素。
【问题讨论】: