我正在尝试将 CGImageRef 复制到剪贴板粘贴板。我发现一个函数声称它应该通过从(零大小)创建一个目标,将图像添加到目标,完成,然后将引用粘贴到剪贴板中来做到这一点。
但是它不起作用,所以有两个问题:
这是解决这个问题的正确方法吗?(即,只有一个小错误,还是我做错了?)
我应该选择什么类型的目的地?来源有它作为TIFF,但word似乎不知道如何处理,我将其更改为PICT,这至少给了我“粘贴”选项,但后来说它太大了......
代码:
void copyCGImageRefToPasteboard(CGImageRef ref)
{
OSStatus err = noErr;
PasteboardRef theClipboard;
err = PasteboardCreate( kPasteboardClipboard, &theClipboard );
err = PasteboardClear( theClipboard );// 1
CFMutableDataRef url = CFDataCreateMutable(kCFAllocatorDefault, 0);
CFStringRef type = kUTTypePICT;
size_t count = 1;
CFDictionaryRef options = NULL;
CGImageDestinationRef dest = CGImageDestinationCreateWithData(url, type, count, options);
CGImageDestinationAddImage(dest, ref, NULL);
CGImageDestinationFinalize(dest);
err = PasteboardPutItemFlavor( theClipboard, (PasteboardItemID)1, type, url, 0 );
}