Zrobienie screena z fragmentu ekranu w Swift, problem z przesunieciem obrazu

0

Hej,

mam taki problem. Chce zrobic screen z fragmentu ekranu przy uzyciu Swift 4 na maca. Na ekranie yswietlam region, ktory mozna przesuwać i zmienac jego rozmiar, aby dostosowac sobie obszar, ktory sie chce przechwycic.

Problem na jaki napotkałam, to to, ze w swift coordynaty 0.0 to lewy dolny róg. Natomiast na ekranie to lewy górny róg. W efekcie wszystkie moje screeny sa z nie tego obszaru z którego trzeba. Próbowałam się bawić trochę w konversje tych punktów niestety, nie działa to tak jakbym tego oczekiwała.

    @objc func getScreenshotRect() {
        
        var rect = transparentHoleView?.frame
        print("Original hole is \(rect)")

       rect = transparentHoleView?.superview?.convert(rect!, to: nil)

        print("converted is \(rect)")

        rect = transparentHoleView?.superview?.window?.convertToScreen(rect!)

        print(" to screen converted is \(rect)")

        let userInfo = [ "image" : ScreenService.sharedInstance.doRegionScreen(rect!) ]
        NotificationCenter.default.post(name: .imageNotification, object: nil, userInfo: userInfo)
    }

output :

Original hole is Optional((12.81640625, 2.13671875, 100.0, 200.0))
converted is Optional((12.81640625, 2.13671875, 100.0, 200.0))
to screen converted is Optional((12.81640625, 62.13671875, 100.0, 200.0))

Obrazek byl ustawiony w lewym dolnym rogu

0

Może jakiś zrzut ekranu co chcesz osiągnąć a co dostajesz? Może też to cię naprowadzi -
https://stackoverflow.com/questions/21751105/mac-os-x-convert-between-nsview-coordinates-and-global-screen-coordinates

1 użytkowników online, w tym zalogowanych: 0, gości: 1