[英]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.