1

我正在尝试将 CGImageRef 复制到剪贴板粘贴板。我发现一个函数声称它应该通过从(零大小)创建一个目标,将图像添加到目标,完成,然后将引用粘贴到剪贴板中来做到这一点。

但是它不起作用,所以有两个问题:

  1. 这是解决这个问题的正确方法吗?(即,只有一个小错误,还是我做错了?)

  2. 我应该选择什么类型的目的地?来源有它作为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 );
}
4

2 回答 2

2

进入詹姆斯登普西的“库比蒂诺绕口令”

彼得在粘贴板上放了一张 PICT。

弃用 PICT 是一种糟糕的粘贴板类型。

参考见:http: //developer.apple.com/mac/library/documentation/cocoa/Conceptual/PasteboardGuide106/Articles/pbUpdating105.html

简而言之:不推荐将 PICT 放在粘贴板上。

于 2010-07-20T18:17:46.080 回答
0

好的,我在这里回答我自己的问题,但这是我发现的:

Apple 希望您将 PDF 用于粘贴板。因此,如果您将 Pict 换成 PDF,它几乎可以正常工作。但是,MS Word(我正在测试的)只开始允许在最新版本(我没有)中粘贴 PDF。

所以,这就是解决方案,使用 PDF,并且需要 Word 2008。

于 2009-01-23T14:37:53.853 回答