问题标签 [android-canvas]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android,画布:如何清除(删除)画布(=位图),生活在surfaceView中?
为了制作一个简单的游戏,我使用了一个模板,该模板使用这样的位图绘制画布:
(画布在“run()”中定义/SurfaceView 位于 GameThread 中。)
我的第一个问题是如何清除(或重绘)整个画布以进行新布局?
其次,我怎样才能只更新屏幕的一部分?
android - 带有触摸事件的 Canvas 中的图像
看起来很简单,但我在实施方面遇到了问题。
我想要一个在屏幕上显示图像的画布,包括onTouch
事件。我已经尝试过ImageView
,但我无法使用画布。我已经尝试过SurfaceView
并且能够在屏幕上的画布中显示图像,但是我遇到了关于动作 onTouch 事件(缩放、平移)的问题。
我需要画布,因为我将在我的代码中渲染图像。
有人可以告诉我这样做的正确方法吗?
android - Android (2D) Canvas 绘图管道的各个部分如何组合在一起?
我想更好地了解 Android (2D) Canvas 绘图管道的组件如何组合在一起。
例如,XferMode、Shader、MaskFilter和ColorFilter是如何交互的?这些类的参考文档非常少,Canvas和Paint的文档并没有真正添加任何有用的解释。
我也不完全清楚具有固有颜色的绘图操作(例如:drawBitmap
,与“矢量”原语如drawRect
)如何适应所有这些 - 他们总是忽略Paint
's 颜色并使用它们的固有颜色代替吗?
我也很惊讶一个人可以做这样的事情:
这会擦除一个椭圆。在我注意到这一点之前,我的心智模型是绘制到画布(概念上)绘制到单独的“层”,然后使用 Paint 的传输模式与 Canvas 的位图组合该层。如果它像那样简单,那么上面的代码将擦除整个位图(在剪辑区域内),因为 CLEAR总是将颜色(和 alpha)设置为 0,而不考虑源的 alpha。所以这意味着有一种额外的掩蔽将擦除限制为椭圆形。
我确实找到了API 演示,但每个演示都“在真空中”工作,并且没有显示它关注的东西(例如:XferModes)如何与其他东西(例如:ColorFilters)交互。
通过足够的时间和精力,我可以凭经验弄清楚这些部分是如何关联的,或者去破译来源,但我希望其他人已经解决了这个问题,或者更好的是有一些关于管道/绘图模型的实际文档我错过了。
这个问题的灵感来自于看到另一个 SO question 的答案中的代码。
更新
在四处寻找一些文档时,我突然想到,由于我在这里感兴趣的很多东西似乎是在skia之上的一个非常薄的单板,也许有一些 skia 文档会有所帮助。我能找到的最好的东西是文档,SkPaint
其中说:
有 6 种类型的效果可以分配给绘画:
- SkPathEffect - 在生成 Alpha 蒙版之前修改几何体(路径)(例如虚线)
- SkRasterizer - 组成自定义遮罩层(例如阴影)
- SkMaskFilter - 在着色和绘制之前修改 alpha 蒙版(例如模糊、浮雕)
- SkShader - 例如渐变(线性、径向、扫描)、位图图案(钳位、重复、镜像)
- SkColorFilter - 在应用 xfermode 之前修改源颜色(例如颜色矩阵)
- SkXfermode - 例如 porter-duff 传输模式、混合模式
它没有明确说明,但我猜这里的效果顺序是它们出现在管道中的顺序。
android - 如何在 Android 中删除画线
现在我正在做一个拼图。想要通过点匹配正确的对。假设如果我们连接不匹配对,它希望显示警报并自动删除绘制的线条。现在所有功能都完成了,除了一件事。我对删除画线(自动)一无所知。
安卓可以吗?有什么方法可以去除画线。
android - 分层图像加画布
我正在尝试将两张图片放在一起。顶部是透明的。在它们之上,我正在尝试添加一个透明画布,以便用户可以绘制、键入、他们需要做的任何事情,并且底部的两个图像是可见的。
所以我可以让两个图像显示或只是画布。每次我尝试显示画布时,它似乎都在覆盖它们的两个图像中。
这是我到目前为止所拥有的..
现在我怀疑画布不是相对布局的一部分。这可能是问题吗?如果是,我不能做 relativeLayout.addView(mCanvas,lp);
有什么建议么?
android - Android——基于异步对象移动的平滑画布平移滚动
我有一个 android 游戏,其中一个球根据加速度计移动。球以可变速度移动。游戏的关卡比智能手机屏幕大得多,因此我在球靠近屏幕边缘时平移画布以适应大关卡。滚动有效,麻烦的是基于球的平滑滚动。
这是一个根据更新之间球的位置变化而变化的尝试:
看起来很紧张。这是一个基于一些常数而变化的尝试。
对于较低的 shiftFactor 值,它可以平滑滚动,但球很容易“超过”滚动。对于较大的 shiftFactors,滚动变得越来越不稳定。
有什么建议么?谢谢。
android - 如何在画布和路径中抗锯齿
我在使用 canvas.clipPath 时遇到问题,它显示锯齿,看起来不平滑,我知道我是否使用了 Paint,我可以使用 mPaint.setFlags(Paint.ANTI_ALIAS_FLAG),这可以抗锯齿,但在我的代码中,我不能使用油漆。
你可以看到我使用 canvas.drawBitmap(bitmap, 0, 0, null); 油漆是空的。如果我需要添加油漆,你能给点建议吗?图片为http://i.6.cn/cvbnm/36/5c/20/5d8d20e3bafe432d792793509f99131e.jpg
编辑:我设置为空的油漆,但没有效果
android - android在画布上设置监听器
是否可以在画布中设置侦听器,以便在单击时做出反应?
我很困惑,因为我想用 xy 坐标绘制图像并将 clickListener 设置为图像......
如果是这样,请显示代码....
THX,感谢您的帮助....
android - 在android中的地图上绘制路径
我需要在我的应用程序中的 2 点之间绘制一条路径。但我找不到任何简单的例子。有没有人知道在 android 的地图上绘制路径?你能帮我吗?
android - 画布 FC
我有一个没有错误但保持强制关闭的绘图画布。我不确定为什么要强制关闭。如果有人能帮助我,我对画布一无所知,那就太好了。
记录猫错误
这是我的 Panel 课程的第 59 行
这是我的 CanvasThread 类的第 28 行
如果有帮助,我从这里的教程中找到了这段代码。