J'essaie de charger une image dans mon NSImageView/NSScrollView et l'afficher à taille réelle, mais l'image finit mystérieusement par s'afficher à environ la moitié de la taille. Je pensais au début qu'il pourrait être réduit pour tenir dans une sorte de contraintes du cadre etc., mais je me suis vite rendu compte que cela ne pouvait pas être correct parce que si j'agrandis physiquement la taille de l'image (dans un programme d'édition d'images) encore une fois, je trouve que je peux probablement charger/afficher des images aussi grandes que je veux.Taille réduite de l'image dans NSScrollView
La taille réelle de l'image en question est seulement 2505 x 930, ce qui ne pose pas de problème puisque je peux doubler et quadrupler cela sans problèmes apparents (sauf, bien sûr, qu'ils sont tous réduits d'environ 50% lorsqu'il est affiché). La partie pertinente de mon code est très simple:
- (IBAction)openSourceImage:(NSString*)aFilepath
{
// obtain image filepath passed from 'chooseFile'...
NSImage *theImage = [[NSImage alloc] initWithContentsOfFile:aFilepath];
if (theImage)
{
[theImageView setImage:theImage];
// resize imageView to fit image; causes the surrounding NSScrollView to adjust its scrollbars appropriately...
[theImageView setFrame:
NSMakeRect([theImageView frame].origin.x, [theImageView frame].origin.y, [theImage size].width, [theImage size].height)];
[theImageView scrollRectToVisible:
NSMakeRect([theImageView frame].origin.x, [theImageView frame].origin.y + [theImageView frame].size.height,1,1)];
[theImage release]; // we're done with 'theImage' we allocated, so release it
// display the window title from the filepath...
NSString *aFilename = [aFilepath lastPathComponent];
[[theImageView window] setTitle:aFilename];
}
}
Quelqu'un peut-il s'il vous plaît me dire où je vais mal ici, et comment afficher les images en taille réelle?
Solution: Bon, alors appelez les résultats « taille » dans une image affichée qui est trop petit pour travailler et appelant les résultats « pixelsHigh/pixelsWide » dans une image agrandie d'échelle indéterminée ...
Mon L'application de test utilise deux «réticules» pilotés par des curseurs pour tracer les coordonnées des entités sur une image (comme une photo ou une carte par exemple). Par pur hasard, j'ai accidentellement remarqué que tandis que l'image chargée ne s'affichait qu'à une fraction de sa taille réelle, les coordonnées x, y DID correspondent à la réalité (indiquant environ 70 pixels/pouce). Allez comprendre que l'on ...
utilisant:
[theImage setSize:NSMakeSize(imageSize.width * 4, imageSize.height * 4)];
Je suis maintenant en mesure de charger l'image à un grossissement CONNU et réduire mes x, les mesures y comploté par le même facteur. J'ai également jeté une méthode NSAffineTransform pour me permettre d'effectuer un zoom avant/arrière pour la meilleure taille d'affichage.
Ouf! C'était un défi pour quelqu'un à mon niveau assez novice, et je ne comprends toujours pas la cause sous-jacente du problème d'affichage d'origine, mais je suppose que le résultat final est tout ce qui compte. Merci encore à vous deux :-)
Pour affiner un peu plus ce problème, j'ai effectué quelques tests supplémentaires et j'ai constaté que lorsque je sélectionnais 'Get Info' sur l'image sur le bureau, les dimensions réelles étaient 2505 x 930 comme mentionné précédemment. Cependant, lors de l'enregistrement de la taille de l'image * en l'ouvrant dans le code ci-dessus *, la taille était de 601,2 x 223,2 (environ 4x plus petit que réel). Les réductions se produisent avec toutes les autres images - bien que la différence 'scaling' varie - donc je suis satisfait que le code est correct, mais il y a une incohérence définie entre la taille réelle et la taille signalée quand j'appelle NSSize size = [theImage size] pendant le chargement. – Bender