3

ビューポートのビューをズームしたいが、内部のコンポーネントの位置が変わらない方法はありますか? 設定は、ビューをズームモードに変更したいだけのjscrollpane内に大きなjpanelがあることです。オブジェクトはパネル内のどこにでもドラッグ アンド ドロップできるため、xy 位置を維持することが重要です。

これが私の現在のズームコードです。私がしているのは、グラフィックスの2Dスケールを使用してビューをズームすることです。問題は、位置がめちゃくちゃなことです。また、パネル全体がjscrollpaneに収まるようにズームアウトしたいと考えています。

//zoom in draw method using scale
g2.translate(zoomX, zoomY);

g2.scale(zoomScale, zoomScale);

g2.translate(-zoomX, -zoomY);

ビューポートの操作も考えています。これが私のビューポートの初期化です。2000 x 1000 の寸法はパネルで、750 x 698 はビューポートのエクステント サイズです。コンポーネントの位置を台無しにせずにズームする方法について何か提案はありますか? おそらく、setviewposition を移動することは解決策の一部ですか?

 view = new JViewport();

 view.setViewSize(new Dimension(2000,1000));

 view.setExtentSize(new Dimension(750,698));

 view.setViewPosition(new Point(view.getExtentSize().width/2,view.getExtentSize().height/2));
4

1 に答える 1

0

ズーム倍率を増減する 2 つのボタンを使用します。paintComponentこのように JScrollPane でパネルのメソッドをオーバーライドします。

@Override
public void paintComponent(Graphics g)
{
    g.scale(zoomFactor, zoomFactor);
    // Change the size of the panel
    setSize(origWidth * zoomFactor, origHeight * zoomFactor);
    // Re-Layout the panel
    validate();
    super.paintComponent(g);
}

それがうまくいくことを願っています。

于 2013-04-17T03:04:41.783 に答える