UIImage PNG着色

我想在用户点击它时为PNG着色。

我在Xcode中找到了一个例子,但是当我在C#中尝试时,我无法检索图像。

这是我写的代码:

public UIImage DrawSelectedBorder(UIImage image) { UIGraphics.BeginImageContextWithOptions(image.Size, false, image.CurrentScale); // for correct resolution on retina, thanks @MobileVet CGContext context = UIGraphics.GetCurrentContext(); context.TranslateCTM(0, image.Size.Height); context.ScaleCTM((System.nfloat)1.0, (System.nfloat)(-1.0)); CGRect rect = new CGRect(0, 0, image.Size.Width, image.Size.Height); context.SetBlendMode(CGBlendMode.Normal); context.SetFillColor(UIColor.Black.CGColor); context.FillRect(rect); // draw original image context.SetBlendMode(CGBlendMode.Normal); context.DrawImage(rect,image.CGImage); // tint image (losing alpha) - the luminosity of the original image is preserved context.SetBlendMode(CGBlendMode.Color); context.FillRect(rect); // mask by alpha values of original image context.SetBlendMode(CGBlendMode.DestinationIn); context.DrawImage(rect, image.CGImage); UIImage coloredImage = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); return coloredImage; } 

刚试过你的代码。 一切都是正确的,但您没有选择要填写PNG的颜色。

更改:

 // tint image (losing alpha) - the luminosity of the original image is preserved context.SetBlendMode(CGBlendMode.Color); context.FillRect(rect); 

至:

 // tint image (losing alpha) - the luminosity of the original image is preserved context.SetBlendMode(CGBlendMode.Color); context.SetFillColor(UIColor.Red.CGColor); context.FillRect(rect); 
Interesting Posts