Это не полный ответ, но, возможно, он поможет вам начать.
Во-первых, вы говорите "изображения не сетчатки". Это может быть заблуждением.
Слово «сетчатка» используется для описания разрешения экрана, вы случайно
использовать (примерно экран "сетчатки", если пиксели экрана настолько малы,
глаз не видит отдельные точки).
Однако я предполагаю, что когда вы рисуете загруженное изображение на экране, оно
отображается в половине размера, вы ожидаете?
Причина этого находится в разделе «1.8 Разрешение экрана и масштабирование текста».
в документах для gui
сказано следующее:
В Mac OS размеры экрана описаны пользователям с точки зрения рисунка
единицы. Дисплей Retina обеспечивает два пикселя на единицу рисования, а
единицы чертежа используются последовательно для размеров окна, дочернего окна
позиции и рисунок на холсте. «Точка» для определения размера шрифта эквивалентна
в блок рисования.
Одним из решений является масштабирование загруженного изображения в два раза:
(scale 2 the-loaded-image)
до рисования.
Наконец, как программа может узнать, является ли текущий дисплей дисплеем сетчатки?
Функция get-display-backing-scale
- это то, что вам нужно:
(require racket/gui/base)
(get-display-backing-scale)
Возвращает 2,0, если экран сетчатки, в противном случае 1,0.
Если у вас более одного монитора, найдите функцию
в документах, чтобы увидеть подробности об этом.