我正在尝试将CGImageRef复制到剪贴板粘贴板。我找到了一个函数,声称它应该通过从(零大小)创建一个目标,将图像添加到目标,最终确定,然后将PasteboardPutItemFlav或ref添加到剪贴板中来实现此目的。
然而它不起作用,所以有两个问题:
这是正确的方法吗? (即,是否只是一个小错误,或者我做错了?)
我应该选择哪种类型的目的地?来源把它作为TIFF,但是单词似乎不知道如何处理,我将其改为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 );
}
答案 0 :(得分:2)
输入James Dempsey的“Cupertino Tongue Twister”
彼得把PICT放在了粘贴板上。不推荐使用PICT是一种糟糕的粘贴板类型。
简而言之:不推荐将PICT放在粘贴板上。
答案 1 :(得分:0)
好的,我在这里回答我自己的问题,但这是我发现的:
Apple希望您将PDF用于粘贴板。因此,如果您将Pict换成PDF,那么它非常有效。但是,MS Word(我正在测试的内容)才开始允许在最新版本(我没有)中粘贴PDF。
所以,这就是解决方案,使用PDF,并需要Word 2008。