簡體   English   中英

Java-縮放有關特定點的畫布

[英]Java - Scaling a canvas about a particular point

我或多或少地完成了一個使用牛頓物理學的非常簡單的行星重力模擬器。 它可以轉換和縮放行星以進行平移和縮放。 可以正常工作,鼠標輸入以及其他所有功能。 我所面臨的問題比其他任何事情都更加美觀。 由於畫布的原點位於窗口的左上角(在JPanel中,在JFrame中),因此一切都圍繞該點縮放。 我想知道是否有任何方法可以將原點設置為屏幕的中心,或圍繞特定點進行縮放? (即使AffineTransform.scale()僅具有一個構造函數,以scaleX和scaleY作為參數)。 我試圖將畫布的邊界設置為負數,例如:

canvas.setBounds(-width/2, -height/2, width/2, height/2);

(寬度和高度是屏幕尺寸)。

這顯然是行不通的,因為負數不在面板的坐標范圍內。

那么,有誰知道完成此任務嗎? 是將屏幕的中心設置為原點,還是圍繞特定點而不是原點縮放?

這里的技巧是連接AffineTransform實例。

  1. 移動整個渲染,使中心位於原點。
  2. 縮放渲染。
  3. 將渲染中心(現在位於原點)移回視圖中心。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM