日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java-图像的几何变换

發(fā)布時間:2024/7/19 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java-图像的几何变换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/** Java 繪圖相關(guān)技術(shù)的學(xué)習(xí)*Graphics類相關(guān)技術(shù)知識: 1.圖像的幾何變換圖像翻轉(zhuǎn):使用另一個重載的drawImage(Image img,int x_1,int y_1,目標(biāo)矩形的第一坐標(biāo)int x_2,int y_2,目標(biāo)矩形的第二坐標(biāo)int x1,int y1,源矩形的第一坐標(biāo)int x2,int y2,源矩形的第二坐標(biāo)ImageObserver observer)利用非縮放的圖像來呈現(xiàn)縮放的矩形,動態(tài)執(zhí)行所需的縮放。圖像旋轉(zhuǎn):利用Graphics2D類的rotate()結(jié)合Math.toRadians()方法來實(shí)現(xiàn)。圖像錯切:利用Graphics2D類的shear(double x,double y)結(jié)合Math.toRadians()方法來實(shí)現(xiàn)。*/ package app;import java.awt.*; import javax.swing.*; import java.net.*; import java.awt.event.*;//包含有main函數(shù)的類的類名和文件名必須保持一致 public class DigitalImage extends JFrame {private static final long serialVersionUID = 1L;private final int width = 500;private final int height =500;private Image img;private int imgW = 500;private int imgH =500;private int x1=0, y1=0;private int x2 = imgW, y2 = imgH;private Canvas canvas = null;private JMenuBar menuBar = null;//圖片旋轉(zhuǎn)角度private int m_angle = 0;public DigitalImage(){super();init();}private void init(){this.setSize(width, height);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置窗體面板為繪圖面板對象canvas = new Canvas();this.setContentPane(canvas);this.setTitle("繪圖");//獲取圖片URL url = DigitalImage.class.getResource("lena.jpg");img = Toolkit.getDefaultToolkit().getImage(url);//創(chuàng)建菜單欄對象menuBar = new JMenuBar();this.setJMenuBar(menuBar);//創(chuàng)建菜單JMenu menu = new JMenu("幾何變換");menuBar.add(menu);//創(chuàng)建菜單項(xiàng)JMenuItem Item1 = new JMenuItem("圖像旋轉(zhuǎn)");Item1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Graphics2D g = (Graphics2D) getGraphics();m_angle = m_angle+15;g.rotate(Math.toRadians(m_angle));//此處畫板對象和框架對象存在數(shù)據(jù)封裝,在框架里需要操作畫板需要傳入指針g.drawImage(img, 0, 0, imgW, imgH, canvas); }});menu.add(Item1);//創(chuàng)建菜單JMenu Item2 = new JMenu("圖像翻轉(zhuǎn)");menu.add(Item2);//翻轉(zhuǎn)方向菜單項(xiàng)JMenuItem childMenu1 = new JMenuItem("水平");childMenu1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//水平方向上,僅更改源矩形和目標(biāo)矩形的x方向映射關(guān)系,即x的值。Graphics g = getGraphics();x1 = Math.abs(x1 - imgW);x2 = Math.abs(x2 - imgW);g.drawImage(img,0,0 ,imgW,imgH, x1,y1,x2,y2,canvas);}});JMenuItem childMenu2 = new JMenuItem("垂直");childMenu2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){//垂直方向上,僅更改源矩形和目標(biāo)矩形的y方向映射關(guān)系,即y的值。Graphics g = getGraphics();y1 = Math.abs(y1 - imgH);y2 = Math.abs(y2 - imgH);g.drawImage(img,0,0 ,imgW,imgH, x1,y1,x2,y2,canvas);}});Item2.add(childMenu1);Item2.add(childMenu2);//錯切變換JMenuItem Item3 = new JMenuItem("圖像錯切");Item3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Graphics2D g = (Graphics2D)getGraphics();g.shear(0.3,0);g.drawImage(img, 0, 0, imgW, imgH, canvas);}});menu.add(Item3);}public static void main(String[] args){new DigitalImage().setVisible(true);}class Canvas extends JPanel{private static final long serialVersionUID = 1678373920467727747L;public void paint(Graphics g){super.paint(g);g.drawImage(img, 0,0, width, height, this);}} }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的java-图像的几何变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。