Racket中的高DPI支持

3
我正在使用Racket创建一个简单的程序,导入两个位图并将它们导出为一张图片。由于这些图片不是Retina屏幕的,因此在我的MacBook上像素密度存在问题。对于我的图像处理,我正在使用2htdp/image库。
有没有办法设置我Racket程序的像素密度呢?

导出图像的代码行是:

(save-image final-image "final.png" WIDTH HEIGHT)

我尽量不包含太多信息,但如果有什么可以添加的(比如更多的代码),以使我的问题更清晰,请告诉我。


P.S:Processing 是这样处理这个问题的:

https://processing.org/reference/displayDensity_.html


嗨,约书亚,你的问题具体是什么?你能给我们展示一下你的图片吗? - soegaard
1个回答

2
这不是一个完整的答案,但或许可以帮助您入门。
首先,您说“图像并非Retina”。这可能是一个误解。 “Retina”一词用于描述您使用的屏幕的分辨率(粗略地说,如果屏幕像素太小,眼睛看不到单个点,则屏幕是“Retina”)。
然而,我猜测当您在屏幕上绘制加载的图像时,它显示的大小只有您期望的一半?
这是因为文档中的“1.8屏幕分辨率和文本缩放”部分提到了以下原因:
在Mac OS上,屏幕尺寸以绘图单位描述给用户。Retina显示器每个绘图单位提供两个像素,而绘图单位用于窗口大小、子窗口位置和画布绘制。字体大小的“点”等同于绘图单位。
其中一个解决方案是将加载的图像缩放为双倍大小:
(scale 2 the-loaded-image)

"最初的回答":在绘制之前。
最后,一个程序如何知道当前的显示器是否是Retina显示器? 函数get-display-backing-scale就是你需要的:
(require racket/gui/base)
(get-display-backing-scale)

如果屏幕是视网膜屏幕,它将返回2.0,否则返回1.0。如果你有多个显示器,请查阅文档中的函数以了解如何处理。"最初的回答"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接