Получить полноразмерные иконки из корзины - PullRequest
3 голосов
/ 01 июня 2011

Я пытаюсь отобразить значки корзины в моем приложении, как пустые, так и полные. Я пробовал несколько способов получить значки, но каждый раз размер 32x32. Вы знаете способ получить полноразмерное изображение?

Ответы [ 4 ]

6 голосов
/ 01 июня 2011

Я предполагаю, что вы получаете значок корзины через NSWorkspace, используя константу kTrashIcon из IconsCore.h (если нет, то это:

NSImage* image = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(kTrashIcon)];

… этот NSImage содержит представленияв нескольких различных размерах. Если вы хотите самый большой, просто переберите доступные представления, чтобы найти его:

NSEnumerator* representationEnumerator = [[image representations] objectEnumerator];
NSSize biggestSize = NSMakeSize(0, 0);
NSSize size;
while ((size = [(NSImageRep*)[representationEnumerator nextObject] size]).width) {
    if (size.width > biggestSize.width) {
        biggestSize = size;
    }
}
[image setSize:biggestSize];

… На моем компьютере это приводит к NSImage, установленному в 512x512.

2 голосов
/ 01 июня 2011

Если вы создаете изображение из следующего файла, то поймите, что 32px x 32px - это просто по умолчанию размер:

/ System / Library / CoreServices / CoreTypes.bundle /Содержание / Ресурсы / TrashIcon.icns

Просто измените его размер до желаемого:

NSString *path = @"/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/TrashIcon.icns";
NSImage *image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
[image setSize:NSMakeSize(512.0, 512.0)];

Когда вы это сделаете, NSImage автоматически выберет подходящее изображение изте, которые доступны.Например, регистрация изображения показывает следующее описание:

image == NSImage 0x102e16bc0 Size={512, 512} Reps=(

    "NSBitmapImageRep 0x102e1f650 Size={512, 512} ColorSpace=(not yet loaded)
      BPS=8 BPP=(not yet loaded) Pixels=512x512 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e24c80 Size={256, 256} ColorSpace=(not yet loaded)
     BPS=8 BPP=(not yet loaded) Pixels=256x256 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e25540 Size={128, 128} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=128x128 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e25e30 Size={32, 32} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=32x32 Alpha=YES Planar=NO 
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0",

    "NSBitmapImageRep 0x102e26720 Size={16, 16} ColorSpace=(not yet loaded)
    BPS=8 BPP=(not yet loaded) Pixels=16x16 Alpha=YES Planar=NO
  Format=(not yet loaded) CurrentBacking=nil (faulting) CGImageSource=0x102e187d0"
)

Большинство изображений, представляющих значки файлов, такие как те, которые возвращены NSWorkspace, будут иметь много доступных размеров, хотя 32 x 32 является размером по умолчанию.

1 голос
/ 01 июня 2011

/ Система / Библиотека / CoreServices / Dock.app / Содержание / Ресурсы / trashfull.png /System/Library/CoreServices/Dock.app/Contents/Resources/trashempty.png

Это значок 128x128

0 голосов
/ 01 июня 2011

Поиск "Корзина для Mac OS" в Google Images

...