Java-多种颜色笔触手势,并在同一GestureOverlayView中持续绘制

Java-多种颜色笔触手势,并在同一GestureOverlayView中持续绘制,第1张

概述这个问题已经在这里有了答案:            >            RegardingAndroidPaintdrawingcolor                                    1个我已经看到了许多使用手势进行绘制的示例.我的要求是,我想在同一个GestureOve

这个问题已经在这里有了答案:            >            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中持续绘制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1087702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存