Mam NSImageView, który zajmuje cały zakres okna. Nie ma obramowania widoku obrazu, a jego zestaw wyświetla się w lewym dolnym rogu. Oznacza to, że początek widoku jest zgodny z początkiem rzeczywistego obrazu, bez względu na to, jak zmienia się rozmiar okna.Uzyskiwanie ograniczeń NSImage w ramach NSImageView
Ponadto obraz jest znacznie większy niż to, co mogę rozsądnie zmieścić w pełnej skali na ekranie. Dlatego też mam ustawiony widok obrazu, aby proporcjonalnie zmniejszyć rozmiar obrazu. Jednak nie mogę znaleźć tego współczynnika skali w dowolnym miejscu.
Moim ostatecznym celem jest odwzorowanie zdarzenia w dół myszy na rzeczywiste współrzędne obrazu. Aby to zrobić, potrzebuję jeszcze jednej informacji ... jak duży jest wyświetlany NSImage.
Jeśli spojrzę na [imageView bounds]
, otrzymam prostokąt obwiedniowy widoku obrazu, który z reguły będzie większy niż obraz.
Próbowałem tego. Ramki i obwiednie i tak dalej odnoszą się do obiektów typu NSView/NSWindow. Tak więc mogłem uzyskać ramkę ograniczającą samego widoku lub okna ... problem polega na tym, że NSImageView nie rysuje na wszystkich swoich granicach. Część widoku jest pusta. I potrzebuję albo ilości, o którą NSImageView przeskalował swój obraz, albo prostokąta, w którym faktycznie wciągnął ImageView (w przeciwieństwie do tego, co posiada) – wrjohns
Na razie idę z obejściem, gdzie msgstr. uniemożliwia zmianę rozmiaru okna i usunięcie wszystkich innych elementów interfejsu użytkownika z okna (np. paska tytułu), dzięki czemu znam granice widoku = granice NSImageView = rozmiar rzeczywistego obrazu. – wrjohns
NSImages nie ma ramek. One ** do ** mają rozmiary, ale rozmiar jest obrazu w pełnej skali, a nie rozmiaru, w którym są faktycznie rysowane. – wrjohns