NSImageView'daki gerçek görüntü boyutunu elde edin

Bir resmi görüntülemek için aşağıdaki kodları kullandım

NSImage *image = [[[NSImage alloc] initWithContentsOfURL:url] autorelease];
NSImageView *newImageView = nil;
newImageView = [[NSImageView alloc] initWithFrame:[self bounds]];
[newImageView setImage:image];
[newImageView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

NSImageView otomatik olarak NSimage'i yeniden boyutlandıracak

enter image description here

NSImage'ın gerçek ekran boyutu nasıl elde edilir?

Hoşgeldiniz herhangi bir yorum

5

2 cevap

İOS için böyle bir metodum var, bunu uyarlayabileceksiniz:

@implementation UIImageView (additions)
- (CGSize)imageScale {
    CGFloat sx = self.frame.size.width/self.image.size.width;
    CGFloat sy = self.frame.size.height/self.image.size.height;
    CGFloat s = 1.0;
    switch (self.contentMode) {
        case UIViewContentModeScaleAspectFit:
            s = fminf(sx, sy);
            return CGSizeMake(s, s);
            break;

        case UIViewContentModeScaleAspectFill:
            s = fmaxf(sx, sy);
            return CGSizeMake(s, s);
            break;

        case UIViewContentModeScaleToFill:
            return CGSizeMake(sx, sy);

        default:
            return CGSizeMake(s, s);
    }
}

- (CGRect)imageRect {
    CGSize imgScale = [self imageScale];
    return CGRectCenteredInCGRect(CGRectFromCGSize(CGSizeScale(self.image.size, imgScale.width, imgScale.height)), self.frame);
}
@end



CGRect CGRectCenteredInCGRect(CGRect inner, CGRect outer) {
    return CGRectMake((outer.size.width - inner.size.width)/2.0, (outer.size.height - inner.size.height)/2.0, inner.size.width, inner.size.height);
}
6
katma

Ekran boyutunu almak için boyut özelliğini NSImage üzerinde kullanabilir miyim?

0
katma
Genellikle değil, gerçek görüntünün yerel boyutu, şu anda görünümde oluşturulduğu boyut değil, büyük ihtimalle farklı bir boyuta ölçeklendirilir.
katma yazar Ron Reuter, kaynak