當前位置:首頁 » 編程語言 » java畫筆

java畫筆

發布時間: 2022-05-02 21:10:56

『壹』 java繪圖機制是什麼樣的

JAVA的繪圖功能非常豐富,繪圖包括字體、顏色、圖形,以下我們將分技術專題來講。
一、關於JAVA的繪圖機制。
JAVA中的任何一個圖形組件,小到文本框、標簽,大到一個FRAME,一個DIALOG,都有一個專門負責顯示其界面的函數,這個函數名稱是固定的:paint,它的原型為: public void paint(Graphics g) { …… } 每當組件大小、位置、組件內容發生變化時,該函數即負責生成新的圖形界面顯示。由於該函數可以被子類繼承,因此,繼承的子類有能力修改該函數。如果子類中沒有出現該函數,則表示其行為完全繼承自父類。則不管是組件中是否添加了新的內容,是否發生了大小的改變,是否發生了位移,父類都要有一個專門的線程,來負責描繪變化以後的組件界面。 paint函數由父類自動維護,並且如果子類一旦重載該函數,必須自己去維護所有的界面顯示。
二、設置畫筆顏色
1、顏色常識
任何顏色都是三原色組成(RGB),JAVA中支持224位彩色,即紅綠藍色分量可取值介於0..255之間。下面首先學習一個JAVA中的類Color Color中的常量:
public final static Color black=new Color(0,0,0);
public final static Color blue=new Color(0,0,255);
…..
Color的構造函數:
public Color(int r,int g,int b);
使用舉例:如果想構造一個灰色對象,則用下面的句子:
Color gray=new Color(205,205,205);
2、設置畫筆顏色語法
g.setColor(color); //color是一個Color對象
每修改一次顏色它影響的就是下面所有的繪圖語句,一直影響到再次碰到setColor函數才以新的顏色代替。
3、使用JColorChooser組件選擇顏色 JAVA中有一個已經定義好的選色器,通過簡單的語法我們就可以將該窗口調出來,從其中選擇自己喜歡的顏色。下面的這個例子就是通過顏色選取器選取顏色,並將選擇到的顏色做為窗體的背景色。
(1)JColorChooser簡介 JColorChooser組件的showDialog()方法讓用戶從彈出的窗口中選擇一個顏色,並傳給Color對象。其調用語法如下: color=JColorChooser.showDialog(this,」選色」,color); 第一個參數指定調用選色器的父窗體,第二個參數指定選色器窗口標題,最後一個為接收顏色的顏色對象。
4、如何將一個圖形(以文件存在,如JPG或者GIF)畫到窗體的畫布中其實放置圖形到畫板中實際就是調用了畫板的drawImage函數。其大致思路如下:首先獲取一個ImageIcon對象,這個對象將會從指定的文件中讀取相關圖象信息,它支持GIF和JPG、BMP等基本圖象格式。語法如下:
ImageIcon icon=new ImageIcon(GraExp5.class.getResource("1.gif"));
獲取到圖象的圖標以後,就可以從圖標中獲取到繪制到畫板上的實際需要的圖象:
Image img=icon.getImage();
有了這個圖象對象,我們就可以用畫板的drawImage函數畫圖了。
g.drawImage(img,0,0,null);

『貳』 java如何構造畫筆工具

已運行成功,符合要求!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test1 extends JFrame{
DrawPane p;
JButton btn=new JButton("清除");
public Test1() {
p=new DrawPane();
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
p.repaint();
}
});
getContentPane().setLayout(new BorderLayout());
getContentPane().add(p,"Center");
getContentPane().add(btn,"North");
setTitle("畫板");
setSize(300,300);
setVisible(true);
}
public static void main(String[] args) {
new Test1();
}
}

class DrawPane extends JPanel {
int x1,y1,x2,y2;
boolean first=true;
public DrawPane() {
x1=x2=y1=y2=0;
MouseAdapter adapter=new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON1) {
x1=x2=e.getX();
y1=y2=e.getY();
}
}
public void mouseDragged(MouseEvent e) {
Graphics g=getGraphics();
if(first){
System.out.println("try");
x2=e.getX();
y2=e.getY();
draw(g);
first=false;
}
else{
x1=x2;
y1=y2;
x2=e.getX();
y2=e.getY();
draw(g);
}
}
public void mouseReleased(MouseEvent e) {
if(e.getButton()==MouseEvent.BUTTON1){
x1=x2=y1=y2=0;
}
}
};
addMouseListener(adapter);
addMouseMotionListener(adapter);

}

public void draw(Graphics g) {
g.drawLine(x1,y1,x2,y2);
}
}

『叄』 如何用java實現畫筆

調用 Ghropics API

『肆』 java是怎樣實現畫一個點的

給你分享2種方法:

方法一:

//1.在內存中創建圖片
BufferedImage i = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB);
//2.得到畫筆
Graphics g = i.getGraphics();
g.drawOval(x, y, width, height);

方法二:

首先重載你所用控制項的paint函數比如

{
publicvoidpaint(Grphicsg){
g.drawline(10,10,10,10);
}
}
以上程序在10,10處畫出一個點!
DrawPanel為你自定義的類,你可以用它定義一個自己的JPanel,你的JPanel中就有這個點了!

『伍』 Java 畫筆Graphics 問題 懂的來瞧瞧。

public void paint(Graphics g){
super.paint(g);
g.drawString("****:"+*******.****(), 20, 45);
g.dispose();
}
你是不是用的JFrame框架?
代碼不全。只能加這些。如果不涉及到圖片處理,最好加一個JLabel,在用setText("****")方法;

如果涉及到圖片且必須用Graphics,還是推薦用JLabel中ICON的Image,這樣就不會消失.

只能給你這些提示了。

『陸』 關於java中畫圖形的paint方法

代碼如下:

/**分析下例:我們只是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);
}
}

import java.awt.*;
import java.awt.event.*;
import java.util.*;
/**
原理是:在Frame中增加成員變數-容器ArrayList,用它來容納點,每次點擊滑鼠就觸發了事件:往容器中添加一個點,然後立即調用repaint方法強制畫出容器中所有的點來
所以我們利用容器來"裝"點,然後通過iterator來遍歷畫出所有的點。

適配器類:使用適配器類可以只重寫我們需要的方法

因為這些適配器類都已經實現了相應的介面即把所有的方法都空實現了一遍 我們只需要重寫我們需要的方法即可

repaint -調用- update() - 調用- paint();

*/

public class MyFrame. extends Frame. {
ArrayList<Point>al ;//泛型指定容器中只能放入Point
public MyFrame(String s) {
super(s);
al =new ArrayList<Point>();
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 <Point>it= 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("點擊");
}

}

『柒』 java中,image是一個圖形對象,從image得到畫筆g,用g畫出的圖形都在image上嗎

對的。 此時的image對象將所有的繪制的圖形的數據都保存在了內存中。

『捌』 java畫圖板畫筆粗細的問題,急~~~~~高手速來幫忙改改!

你可以另外寫一個方法,滑鼠點擊時觸發那個方法,該方法首先獲取滑鼠點擊的那個點,然後根據那個坐標在它的四周畫圖就可以了(可以以那個點為圓心畫圓並填充,這樣一條直線下去,就實現了加粗)。像獲取點的坐標,畫圓什麼的方法,API里都有。

熱點內容
蘋果像素低為什麼比安卓好 發布:2025-05-14 19:13:23 瀏覽:459
安卓機微信怎麼設置紅包提醒 發布:2025-05-14 19:00:15 瀏覽:271
androidsystem許可權設置 發布:2025-05-14 18:56:02 瀏覽:970
mq腳本 發布:2025-05-14 18:45:37 瀏覽:25
仙境傳說ro解壓失敗 發布:2025-05-14 18:45:01 瀏覽:868
betweenand的用法sql 發布:2025-05-14 18:39:25 瀏覽:250
tplink攝像頭存儲卡格式化 發布:2025-05-14 18:37:08 瀏覽:347
安卓平板怎麼安裝excel的軟體 發布:2025-05-14 18:35:44 瀏覽:42
廣州數控圓弧編程實例 發布:2025-05-14 18:25:00 瀏覽:401
搭建伺服器能使用nodejs開發嗎 發布:2025-05-14 18:24:14 瀏覽:136