2009-06-20 6 views
0

다른 응용 프로그램의 윈도우에서 응용 프로그램을 작성하고 있습니다 (이것은 OS X에서 코코아로 작성되었지만 일반적으로 운영체제/프레임 워크 문제), 나는 그것이 간단한 대답을 가져야 만하는 것처럼 보이는 문제에 직면하고있다. 그러나 그것은 나에게 절대적으로 미치게한다. 문제는 다음과 같습니다.윈도우 크기 조정 후 그리기 여백 유지

다른 응용 프로그램의 창 내부에 사각형이 그려집니다.이 사각형은 창의 왼쪽 위 및 왼쪽을 기준으로 특정 위치에 있어야합니다. 즉, 내 사각형과 대상 창의 왼쪽 상단 인 & 사이의 여백은 고정 된 상태로 유지). 상대 x, y 좌표를 윈도우의 크기에 대한 백분율로 계산할 수 있는데, 이는 잘 작동합니다. 사각형이 올바르게 나타납니다. 그러나 사용자가 창 크기를 조정하고 새 높이와 너비를 이전 높이 및 너비에 대한 비율을 기반으로 변환을 사용하여 사각형의 크기를 올바르게 조정할 수 있지만 상대 좌표 위치가 손실됩니다. 이제 사각형 좌표가 올바르지 않습니다. (이미지 참조 - 이것은 문제의 거친 모형 임).

image http://img30.imageshack.us/img30/5273/resizeexample.png

지금, 나는 새로운 X를 계산하는 방법을 알아낼 수 없습니다, y는 상단을 기준으로하고 창 왼쪽 좌표. 창이 사각형이 아닙니다. 크기 변경은 다른 응용 프로그램에 의해 제한되지만 가로 세로 비율 너비/높이는 알 수없는 일부 기능에 의해 변경됩니다. 상대적인 y 좌표를 측정 할 때, 윈도우의 크기가 변경되면 백분율이 변경됩니다. 리사이즈 전에

:
윈도우 사이즈 : H => 760 => 546
직사각형 원점 w : 수치,이 같은 보이는 X => 355, Y => (84) (예를 5백46분의 84 = 15.3 높이) 치수 변환 후

의 %
윈도우 사이즈 : H => 1009 => 717
직사각형 원점 승이어야한다 : (x => 474, y => 99와 같은 것으로 측정 할 수 있지만 , 99/717은 높이 = 13.8 %)를 예측할 수 없습니다.

내가 생각할 수있는 두 개의 창 '측정 값의 모든 비율을 시도했습니다. 또한 원점으로 변환하고 비율을 조정 한 다음 좌표를 이동하는 비율 조정 문제를 피하기 위해 다시 번역한다는 아이디어를 실행했습니다.하지만 어디로 번역해야할지 모르겠습니다. 이것은 아마도 간단한 기하학적/삼각 솔루션을 가지고있을 것입니다. 그러나 얼마나 많은 다이어그램을 그려도 아무런 문제가 발생하지 않습니다. 나는 그들이 올바른 방향으로 나를 가리킬 수 있다면이 문제에 대한 일선 해결책을 지적하는 누군가의 필연적 인 난처함을 받아 들일 것이다.

+0

"다른 응용 프로그램의 창 내부에 사각형을 그립니다 ..."어떻게 그럴 수 있습니까? –

+0

미안하지만, 내가 쓴 것처럼 이상하게 들린다. 나 자신의 창에 직접 그리지 않을거야, 난 그냥 지정 coordiantes (NSWatusow NSStatusWindowLevel로 설정된 수준)를 통해 새 창을 만들고있어. – Winawer

답변

0

을 : 애플 (또는 다른 누구)이 이것을 어떻게하는지 전혀 모르겠다. 솔직히 말해서, 나는 상호 작용하려는 응용 프로그램이 접근하기에는 거리가 멀기 때문에 어쨌든 이것을 염두에 두지 않았다고 생각한다. 이 문제를 해결하기 위해 방금 여러 다른 (x, y) 쌍을 샘플링하고 선형 모델을 구성하여 임의의 좌표에 대한 올바른 좌표를 예측했습니다. 조금은 망치질도하지만, 내가 생각할 수있는 최선의 방법입니다.

0

당신이 왼쪽에서 left 단위 상단에서 top 단위 싶은 경우, 다음과 같은 기원 시도 :

X : left
Y : 후세를 들어 window.frame.size.height - rectangle.frame.size.height - top

+0

하지만 ... 창 크기가 조정 된 후 어떤 상단인지 알 수 없습니다. 그것은 미지의 양입니다. 아니면 여기에 뭔가 빠졌나요? 이동하기 전에 직사각형을 546 + 84 (원점은 왼쪽 상단에 위치)로 배치 할 수 있지만 창 크기가 조정 된 후에는 새 높이가 717입니다. 새 원점은 717 + x 여야하지만 그렇지 않습니다. 이전과 같이 상단에서 동일한 상대 거리를 유지하도록 x를 설정할 대상. (나는 그것을 99로 측정했지만, 나는 가지고있는 것으로부터 그 값을 계산하는 방법을 모른다.) – Winawer

+0

상단으로부터의 거리를 일정하게 유지하고 싶지 않았습니까? –

+0

여백은 일정하지만 창의 크기가 조정되어 있기 때문에 위쪽과의 거리가 다릅니다. 나는 이것보다 더 잘 설명하는 방법을 모른다. 문제의 일부분 일 것이다. Interface Builder에서는 자동 크기 조절 컨트롤에서 다음과 같이 보입니다 : http://img221.imageshack.us/img221/7292/ibexample.png. 창 크기가 조정 되어도 여백이 어떻게 유지되는지 확인하십시오. 이게 내 앱이라면 코코아가 나를 대신 해줄거야.하지만 지금 당장 계산할 필요가있어. 문제가 생겼어. – Winawer

관련 문제