java问题求助,swing组件。关于绘图,做一个“画板”的小作业遇到的问题。谢谢!

比如说在一个继承了Canvas的类上拖拽出来一个矩形。已经实现拖拽的效果(mouseDragged的同时显示随着拖拽变化大小的矩形),松开鼠标(mouseReleased... 比如说在一个继承了Canvas的类上拖拽出来一个矩形。已经实现拖拽的效果(mouseDragged的同时显示随着拖拽变化大小的矩形),松开鼠标(mouseReleased)的时候把这个矩形固定在画布上。
这个拖拽我是这个实现的,每拖拽一点(jvm监测到鼠标拖拽)就把前一个已经出来的(鼠标依旧按下状态)矩形以背景色再画一遍(擦掉原来的矩形),然后再以最新拖拽的位移画一个矩形。

这样的话,出现了问题。jvm又监测到拖拽鼠标的时候就把上一次监测到拖拽时绘制的矩形用背景色擦出掉重新绘制当前检测到拖拽后的新矩形。由于这个擦出,就把画布上以前绘制好的图形比如三角形圆形么得都擦出了一个矩形区域。

如何解决,这个又能产生拖拽效果,鼠标松开时才定下来,而且又不损坏原图像?求思路。

另外,每次最小化窗口后再次打开就没东西了。麻烦指点!

叙述的可能比较混乱。麻烦各位,谢谢!
.
展开
 我来答
水冰天之痕
2013-05-19 · TA获得超过716个赞
知道小有建树答主
回答量:1254
采纳率:50%
帮助的人:1164万
展开全部
(1)每次最小化窗口后再次打开就没东西了
在重写的paint方法里加入super.paint(g);
这样原来的东西就不会丢了

(2)不损坏原图像
其实这个搞深一点的话,就像是有撤销功能的画图工具一样……
可以用集合类ArrayList等等,将画出来的图形存起来
每次paint的时候都拿出来重画过
芥末的未来
2013-05-18
知道答主
回答量:16
采纳率:100%
帮助的人:3.8万
展开全部
Canvas也是继承Graphics的
我想的办法是先用mousePressed记录下一开始的位置(x,y) 再通过用mouseGraggded()画图
xx yy记录位置
lastx lasty表示最后一次的横纵坐标
一直都虚画 直到最后一次再画显示出来 但无法体现橡皮筋功能
最小化再打开没有是因为没保存 得序列化什么的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-05-18
展开全部
一个笨方法:每个图形,都记录下来,重绘时,全部重绘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式