2014-10-21 2 views
0

У меня есть набор фигур, которые я генерирую с использованием CGPath. Я хочу сохранить все те CGPath, которые я создал на диске. В основном я хочу сделать эти CGPath как NSImage, так что либо я могу сохранить их на диске, либо по крайней мере сохранить их закодированную строку Base64.Рендеринг CGPath как NSImage на Mac

Вот пример этого сделано прошивкой - Export CGPath as JPG or PNG

Я пытаюсь сделать что-то похожее на Mac. Я использую для этого MonoMac, и не хотел бы отвечать на любые ответы Objective-C. Я даже не ищу код, просто намеков было бы достаточно.

У меня есть CGPath как аргумент метода, и метод возвращает NSImage. Этот метод будет вызван для того, чтобы все CGPath были сгенерированы в другом модуле.

ответ

0

Я нашел ответ после того, как прибегая к помощи и просят людей

Необходимо CGBitmapContext

Создание экземпляра CGBitmapContext с помощью IntPtr.Zero так, что Кварц может выделить память для вас

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

затем установите Stroke Цвет

context.SetStrokeColor (new CGColor (0.5f, 0.5f, 0.5f)); 
ширина

Set линия

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)); 
Смежные вопросы