UIImage 用另一张图像填充透明部分

2023-11-30

我想在 iOS 中用另一张图像填充图像的透明部分。

我尝试过一些东西UIGraphicsContext,但我无法让它工作,因为我以前从未使用过它。

这是图像:

enter image description here

我尝试过的一些代码:

UIImageView *v = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 70, 70)];

UIGraphicsBeginImageContextWithOptions(v.frame.size, YES, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// beach image
UIImage *img = [UIImage imageNamed:@"zivogosce_camping_05.jpg"];
//[img drawInRect:CGRectMake(2, 0, 12, 12)];

UIImage *annotationImg = [UIImage imageNamed:@"custom_annotation"];
[annotationImg drawAtPoint:CGPointMake(0, 0)];

CGContextSetFillColorWithColor(context, [[UIColor colorWithPatternImage:img] CGColor]);
CGContextFillRect(context, CGRectMake(0, 0, 50, 50));


CGContextDrawImage(context, CGRectMake(0, 0, v.frame.size.width, v.frame.size.height), [annotationImg CGImage]);



UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();

[v setImage:newImage];

UIGraphicsEndImageContext();

但图片不太适合...


我会这样做:

您可以通过执行以下操作来制作圆形的剪切路径:

CGContextSaveGState(context);
CGRect circleRect = CGRectMake(circleCenter.x - radius, circleCenter.y - radius, radius * 2.0, radius * 2.0);
CGContextAddEllipseInRect (context, circleRect);
CGContextClip(context);

// ... do whatever you need to in order to draw the inner image ...

CGContextRestoreGState(context);

// ... draw the transparent png ...

设置剪切路径将导致绘图仅发生在路径内。当您恢复状态时,它会删除剪切路径(或者更确切地说,将其设置回之前的值,这通常允许它绘制到整个画布)。

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

UIImage 用另一张图像填充透明部分 的相关文章

随机推荐

  • 如何避免Fragment重玩?

    我有2个Fragments F1 and F2 我打开第一个Fragment F1来自Activity使用以下代码 MyFragment f1 new MyFragment Bundle bundle new Bundle bundle p
  • C/C++ 结构打包不起作用

    我正在尝试在 64 bit 32 位 Windows 上使用 g 来打包一个结构 struct Foo uint8 t a uint32 t b attribute packed int main int argc char argv qD
  • Prolog 多米诺骨牌游戏

    我正在序言中制作一个游戏 使用一组给定的多米诺骨牌碎片 它应该使用初始集合中的所有碎片制作正确的多米诺骨牌行 我们必须使用一个推理系统 在其中我们必须构建初始状态和最终状态 如下所示 initial dominos 1 4 2 3 4 2
  • 如何处理SIGSEGV、Segmentation failure。使用 Avx2 时

    如何处理SIGSEGV Segmentation failure 使用 Avx2 时 mm256 load pd mm256 store pd solved mm256 load pd 我在调用时收到了分段错误 mm256 load pd
  • Delphi 从哪里获取 BDSCOMMONDIR 的值?

    我的一个系统有一个损坏的 Delphi 安装 它认为BDSCOMMONDIR指着C Windows system32 9 0而在一个正常运行的系统上 它指向C Users Public Documents RAD Studio 9 0 我可
  • NSMutableArray alloc init 与 NSMutableArray 数组

    有什么区别 NSMutableArray alloc init and NSMutableArray array Here in NSMutableArray array 你不必释放array它将自动释放 如果你会写 NSMutableAr
  • 批量执行 for 和 start 命令以实现并行和顺序工作

    我有一个 8 核 CPU 和 8GB RAM 我正在创建一个批处理文件来自动执行 7 zip CLI 用尽大多数参数和变量来压缩同一组文件 最终目标是找到最强的参数组合和导致尽可能最小的存档大小的变量 这本质上是非常耗时的 尤其是当要处理的
  • 奇怪的行为三元运算符[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 来自 C 的我必须用 PHP 做一个项目 我正在使用这
  • 顺利更新谷歌地图上的标记位置

    我正在开发订单追踪模块在android应用程序中 在这个模块中 我实现了一个源位置标记和目的地位置标记 源位置是固定的 目标位置标记是不断变化的 每当位置改变时 但是当位置改变时 标记从一个位置跳到另一个位置 移动不顺畅 实际上我正在删除上
  • 是否可以从该函数中删除递归?

    我已经玩了一段时间了 只是看不到明显的解决方案 我想从 XinY Go 函数中删除递归 def XinY Go x y index slots if y index 1 slots index x print slots slots ind
  • JFrame 过渡效果 - 当调用 setState(Frame.ICONIFIED) 时,它只是转到任务栏而没有动画

    我现在有一个问题 当我打电话时frame setState Frame ICONIFIED 使用我的自定义按钮 我没有使用默认的 JFrame 最小化按钮 JFrame 设置为setUndecorated true JFrame 只是转到任
  • MySQL 中 BINARY LIKE 操作的索引

    我知道varchar pattern opsPostgresql 中存在用于快速 基于索引的搜索LIKE查询 但是MySQL有类似的功能吗 我目前有一个 Django MySQL 设置 其中有一个在非索引字段上运行的查询 并带有一个BINA
  • 写入子进程文件描述符

    我有一个程序 Sample 它从标准输入和非标准文件描述符 3 或 4 获取输入 如下所示 int pfds 2 pipe pfds printf s nEnter input for stdin read 0 pO 5 printf nE
  • Cordova、Phonegap 和 ionic(ios 缺少 1024x1024 图标)

    缺少营销图标 iOS 应用程序必须包含 1024x1024px 营销 PNG 格式的图标 不包含营销图标的应用程序无法 提交应用程序审核或测试版应用程序审核 当你将您的应用程序上传到苹果商店杂志 您在上面的文章中遇到了类似的错误吗 您可以找
  • 将顶点数组和面索引加载到 OpenGL-ES 的最快方法?

    我正在尝试加载已格式化为的 obj 文件 vertexX vertexY vertexZ normalX normalY normalZ and index1 index2 index3 格式为向量和向量数组 然后直接在 Opengl ES
  • 无效的 ELF header Node js 和 couchbase db

    我看过一些关于此问题的帖子 但结果似乎都特定于用户配置 我正在使用 couchbase db 和 Express js 服务器 当我在本地 Windows 运行代码时 它工作正常 数据库本身托管在 Linux 服务器上 当我将代码部署到我们
  • 删除列表中的项目后如何更新列表

    我需要一些时间来解释这一点 所以请继续听我说 我有桌子NewsFeed与自身有 OneToMany 关系 Entity public class NewsFeed ManyToOne optional true fetch FetchTyp
  • 清除后绘制图像时画布出现“形状伪影”

    我的网络应用程序中有一个非常令人费解的画布工件 错误 清除画布后 在画布上绘制另一个图像时 先前清除的圆形会重新出现 但只会出现一次 图像已经初始化一次 如下所示 this image new Image this image src im
  • 迭代时向列表添加元素

    我知道在迭代列表时不允许删除元素 但是是否允许在迭代时向 python 列表添加元素 这是一个例子 for a in myarr if somecond a myarr append newObj 我已经在我的代码中尝试过这个 它似乎工作正
  • UIImage 用另一张图像填充透明部分

    我想在 iOS 中用另一张图像填充图像的透明部分 我尝试过一些东西UIGraphicsContext 但我无法让它工作 因为我以前从未使用过它 这是图像 我尝试过的一些代码 UIImageView v UIImageView alloc i