Login
MFC и Dots per inch
343
11.09.08 12:05
Доброе время суток.
Я работаю с Visual Studio C++ 9.0 (2008).
На базе CDialog 'a я создаю Класс.
У меня есть bmp- файл который я использую в качестве
заднего фона в окне. Так как я использую редактор ресурсов, то размер окна я подогнал под
размер картинки. Кроме того я размещаю другие елементы (текста, кнопки, progressbar) в этом окне.
Меняю я размер шрифта ( с dpi =96 на dpi =120) - размер картинки не совпадает с размером окна и другие элементы оказываются
смещенными по отношению к фону.
Может мне кто то предложить решение, как сделать что бы элементы автоматически "подгонялись" под размер фона (или как правильно это сделать).
Мне тут подали идею , сделать второй диалог для dpi=120 (исходя из того, что остальные размеры используются редко).
Но я не в восторге от этой идеи.
Я работаю с Visual Studio C++ 9.0 (2008).
На базе CDialog 'a я создаю Класс.
У меня есть bmp- файл который я использую в качестве
заднего фона в окне. Так как я использую редактор ресурсов, то размер окна я подогнал под
размер картинки. Кроме того я размещаю другие елементы (текста, кнопки, progressbar) в этом окне.
Меняю я размер шрифта ( с dpi =96 на dpi =120) - размер картинки не совпадает с размером окна и другие элементы оказываются
смещенными по отношению к фону.
Может мне кто то предложить решение, как сделать что бы элементы автоматически "подгонялись" под размер фона (или как правильно это сделать).
Мне тут подали идею , сделать второй диалог для dpi=120 (исходя из того, что остальные размеры используются редко).
Но я не в восторге от этой идеи.
стойте там и слушайте сюда, именно отсюда будет проистекать
NEW 11.09.08 12:16
in Antwort krys 11.09.08 12:05
Но я не в восторге от этой идеи.
-----
Хи-хи... Я тоже не в восторге от биллиных поделок для программинга, но...
Подсказали - правильно - второй набор ресурсов для соответствующего dpi и загрузка соответствующего набора.
Ну либо переписывать библиотечныый код - учить его корректно рендрить картинку при разных dpi... и приличным качеством.
-----
Хи-хи... Я тоже не в восторге от биллиных поделок для программинга, но...
Подсказали - правильно - второй набор ресурсов для соответствующего dpi и загрузка соответствующего набора.
Ну либо переписывать библиотечныый код - учить его корректно рендрить картинку при разных dpi... и приличным качеством.
NEW 11.09.08 12:44
in Antwort Murr 11.09.08 12:16
MFC и Dots per inch
ладно, тогда как грамотно реализовать этот вариант?
1. Создать новый диалог
2. под него новый Класс на базе CDialog
3. Прежде чем создавать объект сделать проверку:
CDC ScreenDC;
VERIFY(ScreenDC.CreateIC(_T("DISPLAY"), NULL, NULL, NULL));
const int nLogDPIX = ScreenDC.GetDeviceCaps(LOGPIXELSX),nLogDPIY = ScreenDC.GetDeviceCaps(LOGPIXELSY);
... в классе из которого вызывается окно .
Так что ли?
ладно, тогда как грамотно реализовать этот вариант?
1. Создать новый диалог
2. под него новый Класс на базе CDialog
3. Прежде чем создавать объект сделать проверку:
CDC ScreenDC;
VERIFY(ScreenDC.CreateIC(_T("DISPLAY"), NULL, NULL, NULL));
const int nLogDPIX = ScreenDC.GetDeviceCaps(LOGPIXELSX),nLogDPIY = ScreenDC.GetDeviceCaps(LOGPIXELSY);
... в классе из которого вызывается окно .
Так что ли?
стойте там и слушайте сюда, именно отсюда будет проистекать
NEW 11.09.08 13:34
in Antwort krys 11.09.08 12:44
1. Создать новый диалог
-----
??? - А зачем? Функциональность диалога останется той же? Тогда новый делать не нужно.
3. Прежде чем создавать объект сделать проверку:
-----
??? - И так - каждый раз? Не лениво? А если где-нибудь пропустишь?
Подумай вот над чем - чтобы ты не лепил используя 2008 .Net - тебе всегда доступны две парадигмы - процедурная и объектная... То, что ты предлагаешь писать - из процедурной.
-----
??? - А зачем? Функциональность диалога останется той же? Тогда новый делать не нужно.
3. Прежде чем создавать объект сделать проверку:
-----
??? - И так - каждый раз? Не лениво? А если где-нибудь пропустишь?
Подумай вот над чем - чтобы ты не лепил используя 2008 .Net - тебе всегда доступны две парадигмы - процедурная и объектная... То, что ты предлагаешь писать - из процедурной.
NEW 11.09.08 14:55
in Antwort Murr 11.09.08 13:34
1. Под "Создать диалог" я имел ввиду, что я посредством редактора ресурсов добавляю диалоговое окно ,
на котором размещаю элементы так, чтобы они корректно были размещены при dpi=120 (непременное условие, что
используется один и тот же bmp-файл, как при 96 так и при 120) .
В любом случае если можно по подробнее объяснить, как ты себе представляешь решение.
(... с точки зрения объектной парадигмы)
на котором размещаю элементы так, чтобы они корректно были размещены при dpi=120 (непременное условие, что
используется один и тот же bmp-файл, как при 96 так и при 120) .
В любом случае если можно по подробнее объяснить, как ты себе представляешь решение.
(... с точки зрения объектной парадигмы)
стойте там и слушайте сюда, именно отсюда будет проистекать
NEW 11.09.08 19:12
in Antwort krys 11.09.08 14:55
непременное условие, что используется один и тот же bmp-файл, как при 96 так и при 120
-----
Хммм... Я бы непременно придушил постановщика задачи с таким непременным условием...
Просто есть 100% уверенность, что завтра у тебя появится необходимость добавить третье разрешение и под него пойдет другая картинка...
Да, просто к сведению - у меня, например, настроено не 96 и не 120 dpi.
Формулировать стоило бы примерно так - даны некоторые наборы ресурсов для разных разрешений экрана и диалог должен уметь построится используя эти ресурсы, включая ситуацию, когда ресурсы недоступны.
как ты себе представляешь решение.
-----
Единственно возможным в ООП способом...
-----
Хммм... Я бы непременно придушил постановщика задачи с таким непременным условием...

Просто есть 100% уверенность, что завтра у тебя появится необходимость добавить третье разрешение и под него пойдет другая картинка...
Да, просто к сведению - у меня, например, настроено не 96 и не 120 dpi.
Формулировать стоило бы примерно так - даны некоторые наборы ресурсов для разных разрешений экрана и диалог должен уметь построится используя эти ресурсы, включая ситуацию, когда ресурсы недоступны.
как ты себе представляешь решение.
-----
Единственно возможным в ООП способом...

NEW 12.09.08 15:36
in Antwort Chipolino 12.09.08 15:27