[J2SE] canvas物件顯示圖片的問題
各位大大好
小弟是剛接觸swing的新手
想請問一下
canvas物件
利用方法paint將圖片載入
但是圖片大過視窗大小
圖片就會被剪掉
有何方法可以避免這個問題呢?
補上一些漏掉的訊息
因為我是要做類似地圖的功能
所以會有拖曳的作動
在拖曳的事件下有加入repaint的動作
不過還是無法讓被裁掉的部份復原
例如:
今天我的圖有800*800
jframe為canvas的container
jframe的大小為500*500
canvas的大小和圖的大小一樣大(800*800)
canvas物件有加入滑鼠拖曳的動作
不過執行後canvas只能顯示出500*500
其他部份都變成預設的底色
附上程式碼:
public class j5_test{
ImageIcon temp = new ImageIcon("bg.jpg");
JFrame f_main = new JFrame("");
int x1,y1,newx,newy;
float scale=1f;
Canvas canvas1 = new Canvas(){
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2d=(Graphics2D) g;
AffineTransform at=new AffineTransform();
at.scale(scale,scale);
g2d.setTransform(at);
g2d.drawImage(temp.getImage(), at, null);
}
};
j5_test(){
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
f_main.getContentPane().setLayout(null);
f_main.setBounds(0, 0, 300, 300);
f_main.addWindowFocusListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
canvas1.setBounds(-50, -50, 500, 500);
f_main.getContentPane().add(canvas1);
f_main.show();
canvas1.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) {
x1=evt.getX();
y1=evt.getY();
}
});
canvas1.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
newx = evt.getX()-x1+canvas1.getX();
newy = evt.getY()-y1+canvas1.getY();
if (newx >= 0){
newx = 0;
}
if (newy >= 0){
newy = 0;
}
if (newx+canvas1.getWidth() <= f_main.getWidth()){
newx = canvas1.getX();
}
if(newy+canvas1.getHeight() <= f_main.getHeight()){
newy = canvas1.getY();
}
canvas1.setLocation(newx, newy);
}
});
}
public static void main(String[] args){
j5_test Test = new j5_test();
}
}
隨便放一張大於300*300的圖到目錄下就可以測試了,檔名bg.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.207.124
→
07/17 00:44, , 1F
07/17 00:44, 1F
→
07/17 00:50, , 2F
07/17 00:50, 2F
※ 編輯: yuntechvb 來自: 218.163.207.124 (07/17 00:56)
→
07/17 00:57, , 3F
07/17 00:57, 3F
→
07/17 13:30, , 4F
07/17 13:30, 4F
→
07/17 13:31, , 5F
07/17 13:31, 5F
※ 編輯: yuntechvb 來自: 218.163.249.103 (07/17 21:13)
※ 編輯: yuntechvb 來自: 218.163.249.103 (07/17 21:15)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):