java swing畫圖片愛心

來源:互聯網
上載者:User

標籤:ram   mil   運行   com   tco   double   size   迴圈調用   sleep   

  第一次用swing做一個可視化程式,寫第一篇隨筆,有寫的不好的地方請多多見諒。上個星期三在網上看到一個畫愛心的軟體,就想著自己用java也實現一個程式,畫愛心用到的數學函數知識在網上百度的,不是本人原創的。網上也有畫愛心的教程,不過那些教程只能在編譯器裡面運行,無法把檔案匯出來,匯出來會出現圖片資源找不到的問題,只是因為資源的使用的路徑有問題,被這個問題困擾了好久,在網上找到了一種方法,把圖片放到src目錄下,使用類的相對路徑(就是以類為基準找資源的位置)。至於畫愛心主要是不斷重寫JPanel裡面的paint方法。


import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JPanel;

public class DrawLove extends JPanel{
    
     private Image image1;
     private String str1;//圖片的位置,如果在src目錄下,直接輸入圖片的位置
     private double theta=0.00 ;
     private double x,y;
     private Graphics g;
    
     public double getTheta() {
        return theta;
    }
    public void setTheta(double theta) {
        this.theta += theta;
    }
    public DrawLove(String str1){
         this.str1=str1;
         this.setLayout(null);

     }
       public void paintComponent(Graphics g)
        {

            try {

        //通過相對路徑擷取圖片的位置
                image1=ImageIO.read(this.getClass().getClassLoader().getResourceAsStream(str1));
            } catch (IOException e) {
                e.printStackTrace();
            }

           Graphics2D g2 = (Graphics2D) g;                                                    
               x= 580-15*(28*Math.pow(Math.sin(theta),3));
               y= 240-15*(20*Math.cos(theta)-6*Math.cos(2*theta)-3*Math.cos(3*theta)-Math.cos(4*theta) );        
               g2.drawImage(image1,(int)x,(int)y,null);    
           }
}

  上面只是畫一朵花的代碼,要花一個完整的愛心,我是通過線程裡面的迴圈調用這個方法實現的。

    public void run() {
        while(love.getTheta()< 2*Math.PI){
            love.repaint();//容器的重畫
            love.revalidate();
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            frame.getContentPane().add(love);
            love.setTheta(0.33);//花的數量
        }
        frame.getContentPane().remove(love);
        
    }

 

java swing畫圖片愛心

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.