在带有边框的画布中的当前剪辑上绘制位图(绘画)

2023-12-24

我正在通过编写游戏来学习 Android,并且在图形 API 方面遇到问题。

我想将图像绘制成路径的形状,然后在路径上添加边框。我能够使用路径剪辑图像,但找不到在其上添加边框的方法。我认为这很简单,因为 API 支持 Canvas.draw* 方法上的 Paint 对象。

Update

在原来的问题中,我的路径包含两个矩形,@christopher-souvey 回答正确。然而,在处理添加一个 ClipPath() 方法时,我遇到了另一个问题。

我通过在路径中添加一个圆圈来更新之前的代码。这是我的新代码:

Bitmap srcImage = BitmapFactory.decodeStream(getAssets().open("panda.jpg"));
Bitmap bitmapResult = Bitmap.createBitmap(srcImage.getWidth(), srcImage.getHeight(), Bitmap.Config.ARGB_8888);
Path path = new Path();

// This is my border
Paint paint = new Paint();
paint.setStyle(Style.STROKE);
paint.setColor(Color.RED);
paint.setStrokeWidth(2);
paint.setAntiAlias(true);

Canvas canvas = new Canvas(bitmapResult);

// Overlay two rectangles
path.addRect(10, 10, 70, 70, Path.Direction.CCW); 
path.addRect(40, 40, 120, 120, Path.Direction.CCW);
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.INTERSECT);

path.reset();
path.addCircle(40, 80, 20, Path.Direction.CCW); 
canvas.drawPath(path , paint);
canvas.clipPath(path, Region.Op.DIFFERENCE);

// The image is drawn within the area of two rectangles and a circle
// Although I suppose that puting Paint object into drawBitmap() method will add a red border on result image but it doesn't work
canvas.drawBitmap(srcImage, 0, 0, paint);

((ImageView)this.findViewById(R.id.imageView1)).setImageBitmap(bitmapResult);

这是我的代码的结果:https://i.stack.imgur.com/8j2Kg.png https://i.stack.imgur.com/8j2Kg.png

这就是我所期望的:https://i.stack.imgur.com/iKhIr.png https://i.stack.imgur.com/iKhIr.png

我是否错过了任何让它发挥作用的东西?


尝试使用canvas.drawPath(path, paint)在绘制位图之后 您可能需要输入canvas.save在剪辑之前和canvas.restore在绘制路径之前(我不确定描边是发生在路径线的内部还是外部)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在带有边框的画布中的当前剪辑上绘制位图(绘画) 的相关文章

随机推荐

  • 在 C++20 之前,使用 const 或引用字段在“A”上调用“std::vector::data()”

    这是答案的后续在具有参考字段的类中放置新内容 https stackoverflow com questions 62158678 placement new on a class with reference field Calling
  • 何时在 Objective-C 中使用 respondsToSelector

    void someMethod if delegate respondsToSelector selector operationShouldProceed if delegate operationShouldProceed do som
  • Kotlin CallsInPlace 合约有哪些好处?

    谁能向我解释一下 Kotlin 有哪些好处callsInPlace https kotlinlang org api latest jvm stdlib kotlin contracts contract builder calls in
  • Python:迁移到新计算机

    我要从装有 Windows XP 的计算机迁移到装有 Windows 7 64 位 的计算机 并且我想在新计算机上安装 Python 我目前正在使用 python 2 7 和 3 2 以及一堆软件包 1 我应该安装64位版本吗 2 我如何知
  • Zend 中的 addmultioption 数组问题

    我正在尝试在我的 Zend Form Element Select 元素中添加选项 monthvalues new Zend Form Element Select month values table new Model DbTable
  • 一开始如何在客户端和服务器端使用环境变量

    当我像这样启动流星项目时 我正在使用环境变量 MYVAR1 foo bar sdf MYVAR2 0 meteor 然后在文件 root lib constants js 中我有 ENV sjobs unisight dfgdfsgf AU
  • Postgres 9.6 - 为 json 数组创建唯一索引

    Sup 我们有一个 Postgres 9 6 表myTable有一排data jsonb NOT NULL DROP TABLE myTable CREATE TABLE myTable data jsonb NOT NULL 我们想要存储
  • 如何手动将库添加到 Visual Studio 2017 项目中?

    我对这个非常基本的问题表示歉意 这个问题肯定已经被问过并回答过 也对我非常过时的术语表示歉意 我寻找答案 但没有找到任何有用的东西 我正在使用 VS 2017 Community 的最新更新 并且我正在尝试手动将我以前称为 函数库 的内容添
  • TypeScript 经常出现问题,并且更喜欢 import 而不是 require

    只要有可能 我都会尝试使用import over require但在某些情况下这会破坏类型检查 处理这个问题的正确方法是什么 是否可以导入 不是全部require可以替换为import s Left Property get does no
  • iPad:分割视图不旋转

    我有以下设置 的一个子类UISplitViewController在构造函数中创建主视图控制器和详细视图控制器 均覆盖的主视图控制器和详细视图控制器shouldAutorotateToInterfaceOrientation回来YES 详细
  • 连接到外部 MYSQL docker 容器

    我有两个正在运行的虚拟机 其中一个 A 在 docker 网络内有 MYSQL 数据库 另一个 B VM 具有我的前端应用程序 docker 容器 我运行我的 MYSQL docker 容器 A 如下所示 docker run name d
  • 当我编辑文件时,Visual Studio 不会跟踪更改或从源代码管理中检出文件

    我是 TFS 的新手 在我的工作中 我将 TFS 项目映射到本地目录 执行获取 一切都按我的预期进行 当我在本地副本上编辑文件时 源代码管理会自动将它们签出以进行编辑 并通过挂起的更改窗口跟踪带有挂起的更改的文件 然后我就用那个窗口全天检查
  • C# 中的模拟文件 IO 静态类

    我是单元测试的新手 我需要模拟 System IO 命名空间中的 File 静态类 我正在使用 Rhinomock 实现此目的的最佳方法是什么 可以说我需要模拟 File Exists File Delete 您无法使用 Rhino 模拟来
  • Hibernate 验证@ManyToOne 至少有一个

    我将 Spring 4 1 与 Hibernate 一起使用 并使用 OneToMany ManyToOne 等注释实体 对于某种情况 A 类 有很多 B 类 如果 A 类没有至少一个与之关联的 B 类 则 A 类无效 有没有一种简单的方法
  • 使用 pyparsing 解析数学表达式

    我正在尝试使用 pyparsing 来解析数学表达式 我知道我可以从 pyparsing 网站复制示例计算器 但我想理解它 以便稍后添加 我来这里是因为我试图理解这个例子 但我做不到 所以我尽力了 我得到了这个 symbol pp Lite
  • 如何找到域名的权威名称服务器?

    如何找到冲突的 DNS 记录的来源 您需要给定域名的 SOA 授权起始 记录 这就是您使用通用可用的nslookup命令行工具 command line gt nslookup gt set querytype soa gt stackov
  • 扩展店件模型

    我需要扩展 Shopware 变体模型 以便添加一些自定义属性 例如金属类型 石头宝石类型 这是基础文章 这些属性将在后端和前端使用 我怎样才能做到这一点 谢谢 扩展 Shopware 核心模型本身根本不可能 根据您尝试扩展的具体模型 有两
  • Maven Surefire 默认情况下顺序执行测试用例吗?

    这是此内容的后续内容question https stackoverflow com questions 7267790 does junit execute test cases sequentially当我深入研究我的研究时我意识到 假
  • iPhone / iPad / iPod 滑动事件 javascript

    我正在寻找 如果可能的话 JavaScript 库 插件来提供滑动事件 然而 我并不追求简单的滑动检测 例如 jqTouch 提供的 我希望创建类似于 iPod 设备上的图像查看器的行为 例如 您向左或向右拖动即可转到下一张图像 您必须将图
  • 在带有边框的画布中的当前剪辑上绘制位图(绘画)

    我正在通过编写游戏来学习 Android 并且在图形 API 方面遇到问题 我想将图像绘制成路径的形状 然后在路径上添加边框 我能够使用路径剪辑图像 但找不到在其上添加边框的方法 我认为这很简单 因为 API 支持 Canvas draw