当前,我正在通过使用CGContext在特定路径上绘制图像来开发项目。
在我的示例中,我使用了从UIView继承的类文件,
在Draw覆盖方法中,通过使用UIGraphics.GetCurrentContext(),我绘制了0到360度的弧,
CGContext setFillColor必须填充图像,因此我使用了下面给出的代码。
var image = UIColor.FromPatternImage(imageView);
context.SetFillColor(image.CGColor);
imageView包含单个图像,但是在输出屏幕上,图像会重复多次。
该问题的复制示例已在此查询中更新。
请从此link
下载示例注意:此问题已在GitHub
上提出。他们说这是行为。在CGContext的背景上添加图像时,我们将在屏幕上获得图像的切片。
有人可以帮我解决这个问题吗?
感谢和问候,
Selva Kumar V。
答案 0 :(得分:0)
如链接(Apple Document)所述。在绘制过程中,如果调用UIColor.FromPatternImage方法,则需要平铺图案颜色的图像以覆盖给定区域。因此,可以在调用该方法之前缩放图像的大小。请参考以下代码。
public UIImage ScalingImageToSize(UIImage sourceImage,CGSize newSize)
{
if(UIScreen.MainScreen.Scale==2.0) //@2x iPhone 6 7 8
{
UIGraphics.BeginImageContextWithOptions(newSize, false, 2.0f);
}
else if(UIScreen.MainScreen.Scale == 3.0) //@3x iPhone 6p 7p 8p...
{
UIGraphics.BeginImageContextWithOptions(newSize, false, 3.0f);
}
else
{
UIGraphics.BeginImageContext(newSize);
}
sourceImage.Draw(new CGRect(0, 0, newSize.Width, newSize.Height));
UIImage newImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
eturn newImage;
}
//. . .
UIImage imageView = new UIImage("a0.png");
UIImage newImage = ScalingImageToSize(imageView, new CGSize(200, 400)(the size you want));
var image = UIColor.FromPatternImage(newImage);
//. . .