将单个图像添加到CGContext背景可在输出上显示平铺视图

时间:2018-09-19 08:55:01

标签: xamarin xamarin.forms xamarin.ios xamarin.android

当前,我正在通过使用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。

1 个答案:

答案 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); 
   //. . .