swift - 使用 ImageMask Swift 填充图像

标签 swift mask layer cgcontext clip

我正在尝试弄清楚如何用颜色填充中心透明的 PNG。 我给你做了一个预览,让你看到我无法解释的东西 :D

enter image description here

“盾牌图标”只是一笔画。无论是在内部还是在外部,它们都没有背景。

我想调用一个函数

func fillShield(percentage: CGFLoat) {
     ...
     //code needed to fill the shield
}

我如何设法让类似的东西在 swift 中工作?

干杯,尼克拉斯

最佳答案

你有原始的 SVG 而不是 PNG(或者你能得到一个)。如果是这样,我建议获取 PaintCode,它将采用此 SVG 并为您提供使用贝塞尔曲线绘制它的代码——从那里也很容易部分填充它——你可以使用贝塞尔曲线和矩形作为 mask 。

如果不是,您可以修改 png 使其在外部不透明吗?如果是这样,你只需要在下面画一个绿色的矩形,它就会显示出来。

如果您需要透明的外部(以覆盖在背景上),请制作两份 PNG 副本,一份内部透明,一份外部透明。使用第一个制作进度图像,然后将第二个的 Alpha channel 复制到结果中。

CoreImage 和 CoreGraphics 具有完成每个部分所需的功能——这里是了解如何获取像素(用于复制 channel )的链接:

http://www.raywenderlich.com/69855/image-processing-in-ios-part-1-raw-bitmap-modification

编辑:详细说明。你需要两张图片

  1. 图1是外层白色不透明内层透明的盾牌

  2. 图2是里面白色不透明外面透明的盾牌

步骤:

  1. 使用 CoreGraphics 在图像上绘制一个绿色矩形,其高度由进度决定,底部设置为盾牌的内部底部

  2. 在其上绘制图像 1。你现在有一个图像,盾牌充满了绿色的进步,外面是白色的。

  3. 将图像 2 的 alpha channel 复制到步骤 2 的结果上。您现在有一个填充了进度且外部透明的图像。

关于swift - 使用 ImageMask Swift 填充图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994600/

相关文章:

css - 展开CSS中的第一层/表格

ios - 如何解决 View 居中之谜?

swift - 我怎样才能获得CGPoint?

objective-c - OS X编程中,如何保存和恢复Windows命令?

ios - 为标签的相同字符设置不同的颜色

oracle - 时区的 Oracle 日期格式掩码是什么?

jquery - "before and after"交互式图像 mask

android - 将图像添加到具有形状的图层列表项

javascript - Leaflet 中部分透明图 block 层下的 GeoJson 层

iphone - iOS应用场景信用卡信息加密