2

私は2つのCGImageRef、imgRef1とimgRef2を持っています。これらの CGImageRefs の 2 つの表現を持つ NSImage を作成したい (NSCursor を作成するため)。このために、BitMapRepresentation initWithCGImage メソッドを使用し、それらの表現を NSImage に追加しました。しかし、これはうまくいきません。

次に、imageRef1 と imgRef2 から NSImage を作成してから、TiffRepresentation を使用してこれらの NSImage から NSData を生成し、それらの表現を追加して最終的に NSImage を取得しました。しかし、これもまた、Retina ディスプレイで低解像度の画像を提供しています。HEre はサンプル コードです: (任意の助けをいただければ幸いです)

float aHotSpotX = (float)nHotSpotX; float aHotSpotY = (float)nHotSpotY;

NSSize nsSz;
nsSz.width = CGImageGetWidth(nLowImageRef);
nsSz.height = CGImageGetHeight(nLowImageRef);

NSImage* image = [[NSImage alloc] initWithSize:nsSz];

// Could have directly used NSBitmapImage initWithCGImage but some issues with that. Will revisit
NSImage *lImage = CreateNSImageFromCGImage(nLowImageRef);
NSData *lowData = [lImage TIFFRepresentation];

NSBitmapImageRep *lowRep = [NSBitmapImageRep imageRepWithData:lowData];
[image addRepresentation:lowRep];


NSImage  *hImage = CreateNSImageFromCGImage(nHiImageRef);
NSData *hiData = [hImage    TIFFRepresentation];

NSBitmapImageRep *hiRep = [NSBitmapImageRep imageRepWithData:hiData];
[image addRepresentation:hiRep];


NSCursor*   aCursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(aHotSpotX, aHotSpotY)];

[image release];
4

1 に答える 1

1

順序を逆にする必要があります。私のテストでは、高解像度の画像はTIFFのインデックス0にあり、低解像度の画像はインデックス1にある必要があることが示されています。

于 2013-01-22T12:18:23.930 に答える