作者Hermite (Simple Life)
看板java
标题Re: [问题] android绘图板擦子如何写?
时间Fri Dec 31 17:14:19 2010
※ 引述《afz096 (我被淡水的路宠坏了)》之铭言:
: ※ 引述《mkia1142 (maki)》之铭言:
: : 我们的期未报告会做类似绘图板的功能
: : 想要让他增加可以有办法擦掉之前画的东西
: : 不知道该怎麽,麻烦大家指点一下了,谢谢
: 我想到下面两种方式:
: 如果想要的功能是反悔(undo),
: 那需要把所画的每个物件存起来,
: 利用座标、半径、透明度等等参数,存下每一次画的物件。
: 这样要 undo 或是 redo 都很方便。
: 这个方式印象中是遥远以前看 java SDK 所附的 sample code。
: /demo/applets/GrahpicsTest/
: 如果想要的功能是橡皮擦(eraser),
: 应该就是等於画笔的功能,只不过颜色是背景颜色。
: 希望有帮得上你:)
Eraser可以有四种功能:
(1) 清空画面
(2) 橡皮擦
(3) un-do
(4) re-do
你可以把每一笔的资料利用List存下来,可能会存的资讯可以有:
(1) Paint 颜色(ARGB)
(2) Paint 粗细(StrokeWidth)
(3) Paint 效果
(3) 初始点(x_1, y_1)
(4) 结束点(x_n, y_n)
通常来说,像是矩形、三角形、圆形、椭圆等都只需要上面这几个特性。
若是直线另外还要用一条List存每一个点(x_2,y_2)~(x_n-1, y_n-1)
un-do和re-do就只是List上的pop和push而已,演算法就自己想,很简单的。
这边的所有事情都可以用到OOP的特性封装、继承、多型。
可以参考一下Android SDK里的samples里面的APIdemo,
做这个绘图板可以看: finger和Path Effect。
橡皮擦可以用setXformode还是直接设定颜色为背景色的作法就可以更简单达成。
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.38.241.180