簡體   English   中英

Jpanel縮放就像畫圖程序一樣

[英]Jpanel Zooming like in a paint program

我在程序的縮放功能上遇到問題。 這是交易,我得到了一個畫布,該畫布擴展了jpanel並在其上繪制了網格。 我的問題是如何實現縮放功能。 通過縮放jpanel,網格上的每個小方塊將分為3x3。

我嘗試進行3面板縮放,3面板大小不同的3面板,並在網格上進行不同划分,但是這會占用大量內存和運行時間。 我只實現了固定大小的1個jpanel,並會使用Graphics2d.scale(...)對其進行縮放,但在鼠標坐標和jpanel上似乎有偏移。 我知道它可以解決,但我的另一個擔心是使用jscrollpane實現了jpanel。 將修復坐標偏移將解決此問題,我沒有嘗試過,因為我不知道如何。

在jpanel中繪制繪制網格

public void paint(Graphics g){
    super.paintComponent(g);
    Graphics2D g2 = (Graphics2D) g;

    int x=0;int y=0;
    g2.setColor(Color.GRAY);
    for(int i=1; i<this.divisions; i++){
        x = i *divSize;
        g2.drawLine(x, 0, x, this.size);
    }
    for(int i=1; i<this.divisions; i++){
        y = i *divSize;
        g2.drawLine(0, y, this.size, y);
    }
            /*code for filling the small squares with colors*/

}

您可以在BufferedImage上繪制所有內容。 可以縮放圖像的圖形以實現所需的縮放效果。

但是無論如何,如果您在面板尺寸(首選尺寸)內使用面板時使用JScrollPane,則必須對其進行調整以在需要時顯示滾動條。

暫無
暫無

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

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