gpt4 book ai didi

cocoa - 将 NSView 渲染到图像 : cacheDisplayInRect draws transparent areas differently from usual drawRect call

转载 作者:行者123 更新时间:2023-12-03 16:18:44 27 4
gpt4 key购买 nike

您好!我遇到了问题,谷歌搜索没有结果...

我为我的 NSView (子类)实现了 drawRect 方法来绘制一些阴影和半透明填充。一切看起来都很棒!但现在我需要从 NSView 创建一个 NSImage(制作快照)以用于拖放目的。

它可以工作,但以某种不同的方式绘制:颜色更暗,对比度不那么高。
为什么?也许是因为 NSGraphicContext 的选项不同?需要帮助和/或建议!

以下是从 NSView 获取 NSImage 的代码:

- (NSImage *)makeImageSnapshot {

NSSize imgSize = self.bounds.size;

NSBitmapImageRep * bir = [self bitmapImageRepForCachingDisplayInRect:[self bounds]];
[bir setSize:imgSize];

[self cacheDisplayInRect:[self bounds] toBitmapImageRep:bir];

NSImage* image = [[[NSImage alloc] initWithSize:imgSize] autorelease];
[image addRepresentation:bir];

return image;
}

以下是用于视觉比较的图像:

  1. 正常 - 由drawRect通常调用绘制:http://cl.ly/image/213C1Y1V0v2H
  2. 不好 - 捕获到 NSImage:http://cl.ly/image/183q442S2J14

相信我,差异可能看起来很小 - 在使用应用程序时这是显而易见的。我不明白为什么会发生这种情况。并希望有人能帮忙...

提前致谢!

最佳答案

我认为透明度问题是由于当它单独缓存时没有其他东西来混合它而引起的。

尝试 -dataWithPDFInsideRect: 或 -dataWithEPSInsideRect: 并从那里获取图像代表。

关于cocoa - 将 NSView 渲染到图像 : cacheDisplayInRect draws transparent areas differently from usual drawRect call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com