gpt4 book ai didi

android - 在 Canvas 上平铺位图

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:54:37 25 4
gpt4 key购买 nike

我想为我通过 Canvas 绘制的位图创建一个“方格纸”外观,并试图找出执行此操作的最佳方法。

我无法将包含方格纸背景的源位图传递给 Canvas 构造函数,因为我正在通过 .lockCanvas() 调用在 SurfaceView 中获取 Canvas。

我尝试过的一些解决方案:

  • 我已经尝试实现 this solution在我的 SurfaceView 的 Thread.run() 中,但我认为问题是当 BitmapDrawable 转换为位图时...它失去了平铺属性。

    canvas = mSurfaceHolder.lockCanvas(null);BitmapDrawable TileMe = new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.editor_graph));TileMe.setTileModeX(Shader.TileMode.REPEAT);TileMe.setTileModeY(Shader.TileMode.REPEAT);

    位图 b = TileMe.getBitmap();canvas.drawBitmap(b, 0, 0, null);

  • 如果我使用 Canvas.drawBitmap method that takes a destination RectF as a parameter ,看起来位图将被平铺以填充 RectF...但是我如何可靠地声明一个填充整个 View 区域的 RectF?

  • 将 Activities 背景设置为所需方格纸外观也不起作用,因为位图/ Canvas 布局是不透明的并且会阻止人们看到它。

有什么想法可以实现吗?

最佳答案

您有两个简单的解决方案:

  • 要么使用 BitmapDrawable,但不提取位图,只需调用 BitmapDrawable.draw(Canvas)。不要忘记设置可绘制对象的边界以填充绘图区域。
  • 使用 BitmapShader 创建一个 Paint 并用它绘制一个矩形(这基本上就是 BitmapDrawable 所做的)。

关于android - 在 Canvas 上平铺位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com