这个问题已经在这里有了答案: > Regarding Android Paint drawing color 1个
我已经看到了许多使用手势进行绘制的示例.我的要求是,我想在同一个GestureOverlayVIEw中绘制多个彩色和多个笔触的手势.为了更清楚,请看下面的图片.
如果用户选择不同的颜色和不同的笔画,则绘图应具有相应的颜色/笔画.现在,它绘制不同的颜色和不同的笔触手势,但是如果我选择不同的颜色或不同的笔触,以前绘制的手势也会采用新的颜色或新的笔触.
回答了类似的问题here,但问题相同.
请提示.
<androID.gesture.GestureOverlayVIEw androID:ID="@+ID/signaturePad" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="@androID:color/white" androID:eventsInterceptionEnabled="false" androID:fadeEnabled="false" androID:fadeOffset="122000" androID:gesturestrokeLengthThreshold="0.1" androID:gesturestrokeWIDth="6" androID:gesturestrokeType="multiple" androID:orIEntation="vertical" > </androID.gesture.GestureOverlayVIEw>
在Java代码中,更改颜色代码
mGestureOverlayVIEw.setGesturecolor(color.BLUE);
谢谢.
编辑:认为可以用Canvas来实现相同的功能,并从here获得了代码.它绘制了多条线,但是同样的问题是当我更改颜色/描边时,最近绘制的线也采用了新的颜色/描边.
请在这里建议出什么问题了.
编辑(答案):最终得到解决方案.看看this链接.
解决方法:
恐怕如果不对自己的版本的GestureOverlayVIEw进行大量修改就无法实现.这是您需要更改的部分.
考虑此工作需要什么:
>您将需要可迭代的(或实际上是某种类型的列表)过去的颜色设置-或在AndroID中需要一堆过去的Paints.
>手势需要以可分离的方式存储.在GestureOverlayVIEw内部,这些文件是使用AndroID的Path存储的,因此,这些文件必须是可分离的-给定path的API,唯一的方法是将不同的路径实例分别覆盖.
>最后,必须在路径上进行排序,以便可以在颜色和路径之间建立关联.
上面的内容很粗略,使您可以迭代到最新的路径和颜色,并将VIEw的draw(Canvas canvas)方法的实例用于thisVIEwsCanvas.drawPath(mLatestAddedpaths.next(),mLatestPaintcolor.next())foreach路径和油漆.
*最后,有一点优化将是在创建视图时创建每种可用的绘画颜色,并将其针对其颜色进行哈希处理,以节省绘画创建的时间.然后,您的mLatestPaintcolor列表将包含油漆的哈希值.
要查看如果查看source,缺少什么,很明显GestureOverlayVIEw正在提供此功能:
>查看您在问题中引用的setGesutrecolor(color).所有这些 *** 作都设置了一个字段mCertainGesturecolor,该字段随后用于设置所有绘制的颜色.
>明智地,当您调用setGesture(Gesture手势)(即您每次进行手势)时,此类的开发人员将在此特定版本的第286行提取路径:
最终路径path = mCurrentGesture.topath();
然后,它们没有存储曾经提取的每个路径,而是将新路径(“ path”)与当前存在的主路径(“ mPath”)组合在一起,位于第292行:
mPath.addpath(path, -bounds.left + (getWIDth() - bounds.wIDth()) / 2.0f, -bounds.top + (getHeight() - bounds.height()) / 2.0f);
这意味着当涉及到draw(Canvas)时,我们不知道哪个路径以哪个顺序出现.
3.这最终使我了解为什么3不起作用-394行上的draw方法可用的信息仅足以将相同颜色绘制为每个路径:
canvas.drawPath(mPath, mGesturePaint);
因此,完全有可能自己重新实现该类以实现您的目标,但是用当前类尝试实现您想要的目标几乎是不可能的.
总结以上是内存溢出为你收集整理的Java-多种颜色/笔触手势,并在同一GestureOverlayView中持续绘制全部内容,希望文章能够帮你解决Java-多种颜色/笔触手势,并在同一GestureOverlayView中持续绘制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)