2016-12-14 7 views
1

Я не сделаю снимок экрана из NSView, но когда я это сделаю, я получаю изображение без фона. Все подзоны - это шоу, но не фон. Я использую этот код:NSView dataWithPDF внутри прямоугольника, но с фоном

if let image = NSImage(data: background.dataWithPDF(inside: background.bounds)) { 
    let imageView = NSImageView(image: image) 
    imageView.imageScaling = .scaleProportionallyUpOrDown 
    return NSImageView(image: image) 
} 

Я подумал, хорошо, когда я только подвиды, то я сделаю скриншот надтаблицы и я thried следующее:

if let superview = background.superview, let image = NSImage(data: superview.dataWithPDF(inside: background.frame)) { 
    let imageView = NSImageView(image: image) 
    imageView.imageScaling = .scaleProportionallyUpOrDown 
    return NSImageView(image: image) 
} 

Но я получаю то же самое результат. Даже если я задаю цвет фона своего background, я не получаю изображение без прозрачного фона.

Как я могу это решить?

спасибо

Артур

ответ

0

я получил ответ:

background.lockFocus() 
if let rep = NSBitmapImageRep(focusedViewRect: background.bounds){ 

    let img = NSImage(size: background.bounds.size) 
    img.addRepresentation(rep) 

    return NSImageView(image: img) 
} 
background.unlockFocus() 
0

Вы могли бы конвертированы мнения отступающего layer.backgroundColor к изображению. Затем назначьте изображение в виде обратного изображения, которое находится в 0-м индексе вашей иерархии представлений, и используйте метод dataWithPDF ->, который успешно захватит фон.

Смежные вопросы