gpt4 book ai didi

macos - NSImage 总是被缩放并且看起来很糟糕

转载 作者:行者123 更新时间:2023-12-03 17:52:13 25 4
gpt4 key购买 nike

我想创建 NSScrollView 对象的 NSImage,这样我就可以将平面图形用于动画目的。

当我将 ScrollView 对象渲染为图形并将其添加回我的窗口时,它可以工作,但看起来非常糟糕,就像它已缩放到 99% 或其他东西一样。我希望图像不被缩放并且 100% 像素准确。 (注意:图像没有缩放,大小相同,只是看起来像是重新缩放得不好 - 与屏幕上的 View 相比,文本看起来粗糙且差劲 ScrollView )

我的代码:(scrollView是我的NSScrollView对象)

NSData *pdf = [scrollView dataWithPDFInsideRect:[scrollView bounds]];
NSImage *image = [[NSImage alloc] initWithData:pdf];

NSImageView *imageView = [[NSImageView alloc] initWithFrame:[scrollView bounds]];
[imageView setImage: image];
[mainGUIPanel addSubview: imageView];

我尝试了很多东西,搞乱了像素大小、边界,使用 IB 创建目标 NSView 并将图像放入其中,但就是无法让图像看起来不那么糟糕。有什么想法吗?

编辑:我尝试将pdf数据写入pdf文件并查看它,看起来不错。因此,位图图像已正常捕获,只是在显示器上看起来像是被稍微缩放了。

编辑2:还尝试像这样获取位图:

NSBitmapImageRep *bitmap = [scrollView bitmapImageRepForCachingDisplayInRect:[scrollView bounds]];
[scrollView cacheDisplayInRect:[scrollView bounds] toBitmapImageRep:bitmap];

NSImage * image = [[NSImage alloc] initWithSize:[bitmap size]];
[image addRepresentation: bitmap];

相同的结果 - 位图看起来完全一样,但显示时很差且缩放。

这让我相信以任何一种方式捕获位图数据都可以正常工作,它正在创建 View 并渲染正在进行缩放的图像。如何确保 View 和图像以正确的尺寸和比例显示?

编辑3:好的,我开始了一个新的空白项目并进行了设置,它工作得很好 - 新的 ImageView 与抓取的位图相同。所以我怀疑我的问题源于将位图绘制到 View 时的一些渲染/合成问题。进一步调查...

事实证明,问题源于我正在渲染的 ScrollView 。它具有透明背景(在 IB 中关闭“绘制背景”),并且 ScrollView 的文本看起来不错。如果我使用透明背景色打开“绘制背景”,则文本渲染效果很差,就像我以编程方式捕获图像时一样。

因此,在我的应用程序中,即使“绘制背景”关闭,也会捕获 ScrollView 图像,就像“绘制背景”打开一样。所以我需要理解为什么当“绘制背景”打开并设置为透明时文本渲染得很糟糕,希望这能引导我找到解决方案。

还尝试创建一个关闭背景绘制的 NSClipview 并将位图 View 放入其中,但它仍然呈现相同的效果。我找不到一种方法可以将透明图像渲染到屏幕上而不会产生可怕的伪影。

最佳答案

好的,我已经找到解决方案了。我不是获取透明背景 ScrollView 对象本身,而是获取父 View (本质上是窗口背景),并将边界限制为 ScrollView 对象的大小。

这会捕获背景和 ScrollView 的内容,并正确显示,不会出现任何透明度问题。

关于macos - NSImage 总是被缩放并且看起来很糟糕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975702/

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