Я пишу кроссплатформенное приложение C ++ с использованием GTK +, но все изображения, которые я добавляю в свое приложение, размыты на экране HiDPI (в данном случае MacBook Pro Retina Display). Другие элементы GTK +, такие как кнопки, текст, древовидная структура и т. Д., А также стандартные значки GTK очень четкие и отлично смотрятся на дисплее.
Одним из примеров является PNG, который я добавляю в окно своего приложения. Это 128x128px, и когда я добавляю его в окно, я уменьшаю его до 64×64:
GdkPixbuf *pix_buf, *logo_buf;
GtkWidget *logo;
pix_buf = gdk_pixbuf_new_from_file("logo128.png", NULL);
logo_buf = gdk_pixbuf_scale_simple(pix_buf, 64, 64, GDK_INTERP_BILINEAR)
logo = gtk_image_new_from_pixbuf(logo_buf);
g_object_unref(pix_buf);
g_object_unref(logo_buf);
gtk_grid_attach(GTK_GRID(grid), logo, 0, 0, 1, 2);
При попытке отладки я использовал функцию gdk_window_get_scale_factor (GdkWindow *window);
проверить масштабный коэффициент. Он всегда возвращает 1 независимо от того, что на самом деле представляет дисплей, что говорит мне, что GTK не знает, каков масштабный коэффициент, даже если другие элементы четкие.
У кого-нибудь есть опыт решения этой проблемы? Как я могу заставить его отображать четкое изображение?
Заранее спасибо!
Задача ещё не решена.
Других решений пока нет …