【发布时间】:2010-01-11 04:00:02
【问题描述】:
我正在编写一个应用程序在另一个应用程序的窗口中绘制(这是在带有 Cocoa 的 OS X 下,但这个问题很笼统,我希望它不会被操作系统/框架问题所困扰),而且我我遇到了一个似乎应该有一个简单答案的问题,但它让我绝对发疯。问题来了:
我在另一个应用程序的窗口内绘制了一个矩形,该矩形必须位于相对于窗口顶部和左侧的特定位置(即,我的矩形与目标窗口的顶部和左侧之间的边距必须保持固定)。我可以计算所需的相对 x,y 坐标占窗口大小的百分比,效果很好:矩形显示正确。但是,用户然后调整窗口大小,我可以通过使用基于新高度和宽度与旧高度和宽度之比的转换来正确调整矩形的大小,但是我失去了我的相对定位:矩形的坐标现在不正确(见图 - 这是问题的粗略模型)。
image http://img30.imageshack.us/img30/5273/resizeexample.png
现在,我不知道如何计算相对于窗口顶部和左侧的新 x,y 坐标。窗户不是方形的;它的调整大小受其他应用程序的限制,但纵横比宽度/高度会因某些未知函数而变化。当我以相对方式测量所需的 y 坐标时,当窗口调整大小时,百分比会发生变化。从数值上看,它看起来像这样:
调整大小之前:
窗口大小:h=>760,w=>546
矩形原点:x=>355,y=>84(例如 84/546 = 15.3% 的高度)
调整大小后:
窗口大小:h=>1009,w=>717
矩形原点应该是:? (我可以将其测量为 x=>474,y=>99,但我无法预测这些值;现在 99/717 = 13.8% 的高度)。
我已经尝试了我能想到的两个窗口测量值的每个比率;我也遇到过平移到原点,缩放,然后平移回以避免缩放移动坐标的问题的想法 - 但我不知道在哪里翻译回!这可能有一些简单的几何/三角函数解决方案,但无论我画了多少图表,我都没有想到。如果他们能在这里为我指出正确的方向,我愿意接受有人指出这个问题的一些单一解决方案的不可避免的尴尬!
【问题讨论】:
-
“我在另一个应用程序的窗口内画了一个矩形……”你是怎么做到的?
-
对不起,我写它的方式听起来很奇怪。我没有直接在他们的窗口中绘图,我只是在指定的坐标上创建一个新窗口(NSWindow,级别设置为 NSStatusWindowLevel)。