球拍中对DPI的高支持

时间:2019-01-18 14:47:15

标签: racket dpi

我正在Racket中创建一个简单的程序,该程序将导入两个位图并将其导出到单个图像中。我的MacBook上的像素密度有问题,因为图像不是视网膜图像。为了进行图像处理,我使用的是2htdp / image库。

是否可以设置球拍程序的像素密度?


导出图像的行是:

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

我试图不包含太多信息,但是如果有什么我可以添加(例如,更多代码)以使我的问题更清楚的话,请告诉我。


P.S:处理通过以下方式解决此问题:

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

1 个答案:

答案 0 :(得分:2)

这不是一个完整的答案,但是也许它将帮助您入门。

首先,您说“图像不是视网膜的”。这可能是一个误解。 “视网膜”一词用于描述屏幕的分辨率, 要使用(如果屏幕像素太小,则屏幕为“视网膜” 眼睛看不到单个点)。

但是,我的猜测是,当您在屏幕上绘制加载的图像时, 是您期望的一半大小?

其原因可在“ 1.8屏幕分辨率和文本缩放”部分中找到 gui的文档中有以下说法:

  

在Mac OS上,屏幕尺寸以图形方式向用户描述   单位。视网膜显示屏每个绘图单位提供两个像素,而   图形单位始终用于窗口大小,子窗口   位置和画布绘图。字体大小的“要点”是等效的   到绘图单元。

一种解决方案是将加载的图像缩放到两倍大小:

(scale 2 the-loaded-image)

绘制之前。

最后,程序如何知道当前显示是否为视网膜显示? 函数get-display-backing-scale是您所需要的:

(require racket/gui/base)
(get-display-backing-scale)

如果屏幕是视网膜,它将返回2.0,否则返回1.0。 如果您有多个监视器,请查找该功能 在文档中查看有关处理方法的详细信息。