- 1、如何用java實現畫圖
- 2、關於java中畫圖形的paint方法
- 3、彩虹怎麼畫
使用Java的Graphics類進行繪圖
Graphics類提供基本的幾何圖形繪製方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等
代碼如下:
/**分析下例:我們只是new了一個對象並沒有調用Paint()方法那為什麼會畫出圖呢?
* Graphics這個類的對象就是一隻畫筆,當某容器調用paint()時就會在該容器中畫圖。
* 當窗口產生時本身就存在一隻畫筆,我們只需要拿到畫筆重寫Paint()便可以隨心作畫。
*每次需要重畫的時候就會自動調用paint(Graphics g)(什麼時候需要重畫呢?如當窗口被覆蓋又重新置頂時,當窗口最小化又最大化時等等)
*/
總結:我們想要在容器中畫圖時只需要做的就是: 在該容器中重寫Paint() 系統會自動傳給我們畫筆,自動調用paint方法按照我們的意願進行作畫。
public class TestGraphics extends Frame. {
public static void main(String []args) {
new TestGraphics(“畫圖”,100,100,200,200,Color.white);
}
public TestGraphics(String s,int x,int y,int w,int h,Color c) {
super(s);
this.setBounds(x, y, w, h);
this.setBackground(c);
this.setVisible(true);
}
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.magenta);
g.fillOval(100, 100, 50, 50);
g.setColor(Color.green);
g.fill3DRect(60, 100, 50, 50, false);
g.setColor(c);
}
}
小例子2:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
原理是:在Frame中增加成員變量-容器ArrayList,用它來容納點,每次點擊鼠標就觸發了事件:往容器中添加一個點,然後立即調用repaint方法強制畫出容器中所有的點來
所以我們利用容器來”裝”點,然後通過iterator來遍歷畫出所有的點。
適配器類:使用適配器類可以只重寫我們需要的方法
因為這些適配器類都已經實現了相應的接口即把所有的方法都空實現了一遍 我們只需要重寫我們需要的方法即可
repaint -調用- update() – 調用 – paint();
*/
public class MyFrame. extends Frame. {
ArrayListPointal ;//泛型指定容器中只能放入Point
public MyFrame(String s) {
super(s);
al =new ArrayListPoint();
this.setBounds(100, 100, 200, 200);
this.setBackground(Color.darkGray);
this.setVisible(true);
this.addMouseListener(new MouseAdapter(){//匿名類
@Override
public void mousePressed(MouseEvent e) {
MyFrame. f = (MyFrame)e.getSource();//e是事件,e.getSource()是獲取事件源即窗口 f
f.al.add(new Point(e.getX(),e.getY())); //而e.getX(),e.getY()則是獲取事件發生的x,y坐標
repaint();//每次點擊鼠標觸發事件時都有了新的點,所以強制要求重畫,才能立刻顯示出該點否則只有窗口被最小化又最大化後才能看到剛才的點
}
});
//匿名類:在參數處我們傳遞的是new WindowAdapter() {匿名類體} );他沒有名字,我們把它當成WindowAdapter來用,為什麼可以這樣呢?因為語法上規定了匿名類要麼是實現了前面的接口,要麼是從前面的類繼承,就着前面父類的名字來寫類體。當此類與其他類關係不大時可以用匿名類
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g) {
Iterator Pointit= al.iterator();//泛型指定取出元素時只能是point
while(it.hasNext()) {
Point p = it.next();//由於使用泛型這時候就不用強制轉換了
Color c = g.getColor();//保護原有顏色
g.setColor(Color.pink);
g.fillOval(p.x-6, p.y-6, 12, 12);
g.setColor(c);
}
}
public static void main(String []args) {
new MyFrame(“點擊”);
}
}
1.畫彩虹的底座雲彩
首先用半曲線畫出雲朵的形狀,圍成三頌一個橢圓形的圓汽哄圈,形成雲朵的形狀,再在水平線的另一邊也畫一個,可以大小不同。
2.畫彩虹弧線
然後薪塑扯用半圓曲線連接畫好的兩個雲朵,半圓曲線呈圓弧狀,畫六道線。
3.
給彩虹上色
最後塗上顏色,彩虹的圓弧狀塗成彩虹的顏色,白雲的可以塗成白色,或者是其他顏色。
1.畫彩虹的雲彩
首先,畫一個羊毛卷的形狀,再用辦曲線畫出雲朵的形狀,畫出三個不同大小的雲朵,以及他們的分布位置不同,一個在左邊,一個在右邊,一個在下邊。
2.
畫彩虹基本型
然後用彩色畫筆畫出半圓形弧狀連接,其中兩個雲朵,再用其他顏色的畫筆畫出半圓弧狀,連接另外兩朵雲朵。
3.
給彩虹塗上顏色
最後顏色塗好之後,彩虹作品就做好了。
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127054.html