畫圖板的重繪
前言
我們畫圖板上的內容如果不加重繪的話就是一次性的,只要我的畫板被隱藏或是擴大,畫板上的內容就會消失。
在我之前的內容裡,我實現了一個基礎的畫線內容,它的原始碼是這樣的
public void mouseDragged(MouseEvent e) {
g.setColor(Color.white);
g.drawLine(x1, y1, x3, y3);//將上一次的線塗白
x2=e.getX();
y2=e.getY();
g.setColor(Color.black);
g.drawLine(x1, y1, x2, y2);
x3=x2;
y3=y2;
而這會出現什麼問題呢,
如果我們在下一次的拖動操作中將拖動的線移到之前的線上,之前的線就會被擦除,這是由於“塗白”程式碼造成的。為了解決這個問題,我們想到實現重新
建立新的類記錄座標
import java.awt.Color;
import java.awt.Graphics;
public class Shape{
public int x1,y1,x2,y2;
void drawShape(Graphics g) {
g.setColor(Color.black);
g.drawLine(x1, y1, x2, y2);
}
}
我們在這個類裡寫入了一個畫線的函式,這個函式也可以寫在別處,新類的主要作用是記錄座標
在我們的監聽器的類裡邊建立個Shape物件陣列用於記錄座標
public Shape []a=new Shape[100];
int index=0;
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
Shape shape=new Shape();
shape.x1=x1;
shape.y1=y1;
shape.x2=x2;
shape.y2=y2;
a[index++]=shape;
}
這樣就存入了一個shape物件的資訊
重繪的實現
很簡單,只需要在畫白線的後面加上重繪就行
public void mouseDragged(MouseEvent e) {
g.setColor(Color.white);
g.drawLine(x1, y1, x3, y3);
for(int i=0;i<a.length;i++) {
System.out.println("重繪");//用於檢測是否實現
Shape shape=a[i];
if(a[i]!=null)
shape.drawShape(g);
else
break;
}
x2=e.getX();
y2=e.getY();
g.setColor(Color.black);
g.drawLine(x1, y1, x2, y2);
x3=x2;
y3=y2;
}
整個介面的重繪
要實現這個功能我們需要改寫我們的paint函式
paint函式本身隱含在我們的JFrame裡面,在我們的框架發生大小改變的時候會自動呼叫,我們現在要給它增添一些內容,並且保留原來的內容
public void paint(Graphics g) {
super.paint(g);//繼承父類的功能
for(int i=0;i<a.length;i++) {
System.out.println("重繪");
Shape shape=a[i];
if(a[i]!=null)
shape.drawShape(g);
}
}
小結
以上就是關於重繪的一些簡單實現
相關文章
- CAD夢想畫圖如何進行重畫、繪圖模式繪圖模式
- canvas 塗鴉畫板,支援筆寫、手寫、滑鼠繪圖Canvas繪圖
- 如何用語雀畫板,輕鬆繪製架構圖?架構
- 圖片轉繪畫效和繪畫軟體
- DrawPad圖形繪畫工具
- DrawPad 圖形繪畫工具
- DrawPad for mac 圖形繪畫工具Mac
- mac圖形繪畫工具:DrawPadMac
- DrawPad for mac圖形繪畫工具Mac
- 利用CustomDrawNodeCell 的DrawImage重繪小圖示
- 手把手教你實現一個canvas智繪畫板Canvas
- CAD夢想畫圖中的“繪圖工具——多線段”繪圖
- CAD夢想畫圖的瀏覽模式與繪圖模式模式繪圖
- 好用的漫畫繪圖軟體:MediBangPaint Pro for mac繪圖AIMac
- 觸控板繪畫工具:Inklet for Mac v2.2.5啟用版Mac
- Winform下的畫板ORM
- canvas畫素畫板Canvas
- canvas繪製圖案是重疊繪製而不是重置Canvas
- canvas 繪製圖案是重疊繪製而不是重置Canvas
- Mac輕量級cad繪圖工具:CAD迷你畫圖Mac繪圖
- CAD迷你畫圖 for mac(輕量級cad繪圖工具)Mac繪圖
- CAXA CAD電子圖板2023:精準繪圖,打造卓越品質繪圖
- 如何修改CAD夢想畫圖繪圖視窗的背景顏色繪圖
- 用AI繪畫怎麼可以把照片一鍵生成漫畫圖?詳細ai繪畫教程來啦!AI
- 【AI繪畫】秒級出圖 快速生成大師級畫作AI
- Word流程圖怎麼畫?如何輕鬆繪製流程圖流程圖
- Inklet for Mac(觸控板繪畫工具) v2.2.5中文版Mac
- AI繪畫AI
- 【R語言】繪製權重直方圖R語言直方圖
- AI 繪畫 - 如何 0 成本線上體驗 AI 繪畫的魅力AI
- Artstudio Pro for Mac(繪畫和圖片編輯工具)Mac
- Android原生繪圖之一起畫個表Android繪圖
- Flutter 簽字畫板及螢幕或Widget截圖Flutter
- Ai繪畫怎麼才能生成好看的漫畫圖?詳細教程讓你免費AI作畫!AI
- 微火:Ai繪圖網站程式原始碼搭建,定製專屬的ai繪畫小程式AI繪圖網站原始碼
- Mapboxgl地圖重繪完成事件 | idle狀態地圖事件
- R繪圖(2): 離散/分類變數如何畫熱圖/方塊圖繪圖變數
- Ai繪畫教程:如何用ai繪畫軟體來生成城市插畫AI