当前位置: 首页 > 知识库问答 >
问题:

Android画布-画一个洞

江亮
2023-03-14

有没有可能用画布在Android中实现下面的图片?

我想有一个洞,而不仅仅是在黄色的红色层上有一个圈。我在ondraw()-method中使用以下代码进行了尝试(但失败了):

canvas.drawBitmap(yellow, 0, 0, paint);
canvas.drawBitmap(red, 0, 200, paint);
Paint p = new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawCircle(300, 300, radius, p);

但是当我使用这段代码时,它在两个位图上都开了一个洞。最后,这个应用程序应该是一个带有球、洞和其他东西的迷宫。当球掉进洞里时,它应该出现在红色位图下。有可能实现这一点吗?

答:

如果有人也有同样的问题:使用View而不是SurfaceView。这是我的错,因为表面视图的bg不能设置为透明。

共有1个答案

符允晨
2023-03-14

我想你误解了画布/位图的工作原理。没有层或对象存储(除非您存储它们)。它只是显示的图像的一个像素一个像素的表示。红色方块上的黄色圆圈就是你在上图中所展示的。

如果你真的想要一个红色的图层,你必须合成两个位图。在一个位图中绘制红方上的孔,在一个位图中绘制黄色层。在画布上,绘制黄色的位图,然后在顶部绘制“红方带洞”的位图。

 类似资料:
  • 本文向大家介绍python实现在一个画布上画多个子图,包括了python实现在一个画布上画多个子图的使用技巧和注意事项,需要的朋友参考一下 matplotlib 是可以组合许多的小图, 放在一张大图里面显示的. 使用到的方法叫作 subplot. 均匀画图 使用import导入matplotlib.pyplot模块, 并简写成plt. 使用plt.figure创建一个图像窗口. 使用plt.sub

  • 在IE9画布中现在是否支持虚线/点线?目前我正在做与以下内容非常相似的事情: 这在IE7、IE8、IE9兼容模式和FireFox中工作很好,然而,在IE9和Chrome中,为每条虚线绘制一个实心笔画。 对为什么会发生这种情况有什么想法吗?

  • 我找到了几个与此相关的问题和答案,但没有一个解决方案让我明白为什么这段代码不起作用: 我有一个tkinter窗口,其中动态生成了内容——这意味着如果屏幕上有两个或多个小部件要显示,则需要能够向下滚动。我希望能够用小部件填充框架“f”,然后使用画布。创建_window()函数以可滚动方式显示它。 现在显示窗口,但滚动条未启用-类似于滚动区域不正确或滚动条与画布之间的链接不正确。

  • Sketch 里的画布尺寸是无限的。你可以用无限精准的分辨率无关模式来查看画布,或者打开像素模式来查看每一个像素导出后的样子。 如果你想在画布中设置一个固定的边框,你可以直接用画板 (Artboard) 工具创造一个新的画板。 导航 画布中的导航是非常容易的,你可以直接用鼠标滚轮滑动或者电脑的触摸板来控制方向。你还可以按住空格键,来使用抓手工具移动画布。并且,没有任何对象被选中的时候,你可以用方向

  • createCanvasContext CanvasContext ft.createCanvasContext(string canvasId, Object this) 创建 canvas 的绘图上下文 CanvasContext 对象 参数 string canvasId 要获取上下文的 canvas 组件 canvas-id 属性 Object this 在自定义组件下,当前组件实例的th

  • CanvasContext jd.createCanvasContext(string canvasId, Object this) 创建 canvas 的绘图上下文 CanvasContext 对象 参数 string canvasId 要获取上下文的 canvas 组件 canvas-id 属性 Object this 在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 c