• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift之Mac中NSView视图里的截图【ScrollView中的内容截图】

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

import Foundation

import Cocoa

 在视图中的方法

extension NSView {

    /****1.

     在drawRect方法中绘制

    使用Quartz2D绘图函数在视图上绘制圆角矩形

 ****/

    override func draw(_ dirtyRect: NSRect) {

        super.draw(dirtyRect)

        NSColor.blue.setFill()

        let frame = self.bounds

        let path = NSBezierPath()

        path.appendRoundedRect(frame, xRadius: 10, yRadius: 10)

        path.fill()

    }

    

    /***2

     在drawRect方法之外实现绘制,需要使用lockFocus方法锁定视图,完成绘图后在执行unlockFocus解锁

     drawRect方法与lockFocus锁定方式不能同时使用

     ***/

    func drawViewShape(){

        self.lockFocus()

        let text: NSString = "RoundedRect"

        let font = NSFont(name: "Palatino-Roman", size: 12)

        let attrs = [NSAttributedString.Key.font: font,NSAttributedString.Key.foregroundColor:NSColor.red]

        let location = NSPoint(x: 50, y: 50)

        text.draw(at: location, withAttributes: attrs)

        self.unlockFocus()

    }

    /****3

     视图截屏

     ***/

    func saveSelfAsImage() {

        self.lockFocus()

        let image = NSImage(data: self.dataWithPDF(inside: self.bounds))

        self.unlockFocus()

        let imageData = image!.tiffRepresentation

        let fileManager = FileManager.default

        //制定文件路径

        let path = "/Users/.../Documents/myCapture.png"

        fileManager.createFile(atPath: path, contents: imageData, attributes: nil)

        //保存结束后Finder中自动定位到文件路径

        let fileUrl = URL(fileURLWithPath: path)

        NSWorkspace.shared.activateFileViewerSelecting([fileUrl])

        

  }

        //如果视图比较大,是带滚动条的大视图,则按下面的方法处理可以保证获得整个滚动页面的截图

    func saveScrollViewAsImage() {

        //

        let pdfdata = self.dataWithPDF(inside: self.bounds)

//        self.dataWithEPS(inside: self.bounds)  ????

        let imageRep = NSPDFImageRep(data: pdfdata)!

        let count = imageRep.pageCount

        for i in 0..<count {

            imageRep.currentPage = i

            let tempImage = NSImage()

            tempImage.addRepresentation(imageRep)

            let rep = NSBitmapImageRep(data: tempImage.tiffRepresentation!)

            let imageData = rep?.representation(using: NSBitmapImageRep.FileType.png, properties: [:])

            //NSBitmapImageRep.PropertyKey : Any

            let fileManager = FileManager.default

            //制定文件路径

            let path = "/Users/.../Documents/myCapture.png"

            fileManager.createFile(atPath: path, contents: imageData, attributes: nil)

            //保存结束后Finder中自动定位到文件路径

            let fileUrl = URL(fileURLWithPath: path)

            NSWorkspace.shared.activateFileViewerSelecting([fileUrl])

            

        }

        

        

    }

}

 

改写为工具类中的方法

期待中


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap