在Mac上将CGPath渲染为NSImage

时间:2014-10-21 20:01:00

标签: macos xamarin nsimage monomac cgpath

我有一组使用CGPath生成的形状。我想保存我在磁盘上生成的所有CGPath。基本上我想将这些CGPath呈现为NSImage,以便我可以将它们保存在磁盘上或至少保存它们的Base64编码字符串。

以下是在iOS上完成的示例 - Export CGPath as JPG or PNG

我正在尝试在Mac上做类似的事情。我正在使用MonoMac,并且不介意任何Objective-C答案。我甚至不是在寻找代码,只需要一些提示即可。

我有一个CGPath作为方法的参数,该方法返回NSImage。对于在另一个模块中生成的所有CGPath,将调用此方法。

1 个答案:

答案 0 :(得分:1)

我在Google上搜索并找人后找到了答案

需要CGBitmapContext

使用CGBitmapContext创建IntPtr.Zero的实例,以便Quartz可以为您分配内存

var context = new CGBitmapContext (IntPtr.Zero, width, height,
    8, 4 * column, CGColorSpace.CreateDeviceRGB (),
    CGImageAlphaInfo.PremultipliedFirst))

然后设置描边颜色

context.SetStrokeColor (new CGColor (0.5f, 0.5f, 0.5f));

设置线宽

context.SetLineWidth (2f);

CGPath添加到此上下文

context.AddPath (cgpath);

然后划出路径

context.StrokePath ()

从上下文中获取CGImage并从中创建NSImage

var cgimg = context.ToImage ();
var nsImage = new NSImage (cgimg, new CGSize (cgimg.Width, cgimg.Height));