作者fenir (severus)
看板java
标题绘图的两个问题
时间Wed Jun 20 00:48:05 2012
有两个和paint()有关的小问题
1 没有用物件存画面上的图形的话,要如何从最小化视窗还原後还留有之前的画面?
每一次paint()能保留之前画的东西,但是缩小再还原後整个画面会清空
我是用override update()的方式让每次画画时都不会清空画布,只有加新的图画
public void update(Graphics g) {
paint(g);
}
执行顺序是repaint() > update() > paint() > 画出东西
目前问题是还原视窗後,程式会自动call paint()而不是update() ,所以画布被清空
2.
http://imgur.com/Jsjkx
我是用fillOval当作画笔的功能,抓取滑鼠的位置
问题是只要画太快就会有间隙,请问有什麽办法可以解决?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.48.111
1F:→ s3748679:1. Paint事件发生时再画一次。 06/20 01:14
2F:→ s3748679:糟糕.. 这里是Java板..... 请无视我的话吧 06/20 01:16
3F:→ fenir:不好意思我不太懂你的意思。我目前做法是override update() 06/20 01:20
4F:→ fenir:嗯@@ 06/20 01:21
5F:→ s3748679:抱歉~ 我以为这是在其他语言版问题.. 所以我真的不清楚~ 06/20 01:25
6F:推 lvlightvivi:1 repaint() 2 用直线连起来 06/20 06:34
我发现视窗最小化再还原後,程式会自动call paint()一次
所以有没有repaint()其实没有影响
我的"画笔"功能是直接抓取滑鼠位置然後用fillOval画出,没有用物件的型式将
"画"给存起来,所以程式自动call paint()时就无法画出原图了
另外就是我希望能调整画笔的粗细,所以用drawLine无法调整粗细,还是您指的
「用直线连起来」是指另一种方法? 谢谢
※ 编辑: fenir 来自: 220.134.48.111 (06/20 11:33)
7F:→ bitlife:程式架构要修正,所有状态应该要能在paint绘出 06/20 11:43
8F:→ sbrhsieh:可以透过调整 Graphics2D 的 stroke 属性来调整粗细 06/20 12:02