我正在尝试弄清楚如何用颜色填充中心透明的 PNG。 我给你做了一个预览,让你看到我无法解释的东西 :D
“盾牌图标”只是一笔画。无论是在内部还是在外部,它们都没有背景。
我想调用一个函数
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是外层白色不透明内层透明的盾牌
图2是里面白色不透明外面透明的盾牌
步骤:
使用 CoreGraphics 在图像上绘制一个绿色矩形,其高度由进度决定,底部设置为盾牌的内部底部
在其上绘制图像 1。你现在有一个图像,盾牌充满了绿色的进步,外面是白色的。
将图像 2 的 alpha channel 复制到步骤 2 的结果上。您现在有一个填充了进度且外部透明的图像。
关于swift - 使用 ImageMask Swift 填充图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28994600/