所以我試圖創建一個小圖,我將允許用戶添加隨機線等作爲學習項目。最令人沮喪的部分是弄清楚如何讓放大/縮小工作 - 我將ZoomScale變量綁定到鼠標滾輪,並且它「起作用」,但我希望能夠標記軸,具體取決於它們的大小放大並計算它的距離測量(米,釐米等,因爲我也有一個MM每像素變量,所以我們應該能夠計算出來),所以它需要更精確的科學,而不僅僅是「它的工作」放大和縮小計算
double X1 = ((actualline[i].X1 + actualWidth - VisibleXMax - VisibleXMin) * ZoomScale); //Calculate modified coordinates based on
double X2 = ((actualline[i].X2 + actualWidth - VisibleXMax - VisibleXMin) * ZoomScale); // window width, window height, Visible X/Y, and Zoom.
double Y1 = ((actualline[i].Y1 + actualHeight - VisibleYMax - VisibleYMin) * ZoomScale);
double Y2 = ((actualline[i].Y2 + actualHeight - VisibleYMax - VisibleYMin) * ZoomScale);
而不是努力工作,讓我們嘗試一個簡單的1維方程,我可以重寫爲x和y。
因此,可以說,我們在x方向
. . . . .
目前,填補了我們的整個屏幕(以及窗口實際上)5個單位寬線。從0到5一路穿過。現在用戶滾動來放大前三個單位。現在這3個單位應該填滿整個窗口,因爲用戶放大了它。它應該像這樣在窗口
. . .
所以originially線爲X1 = 0,X2 = 5.0至5。由於我們的窗口是5個單位寬它填補了窗口。現在,用戶只想看到單位x1 = 0到x2 = 3. 0到3.但是我們希望這些單位在整個窗口中伸展,所以通過某種縮放計算(如上所述),我們想要將0,3變爲0,5使用可用的變量。變量是:
窗口寬度(5個單位在這種情況下)
原始X1和X2(0和5在這種情況下)
可見X min和max(0和3在這種情況下)
並且每次向上滾動時縮放比例爲1並且增量爲0.05。
有什麼建議嗎?
@FirstStep OK的聲音好!不急! – Fivestar