TwipsPerPixel(s) в многомониторной конфигурации

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

TwipsPerPixel(s) в многомониторной конфигурации

Сообщение Ennor » 06.04.2006 (Чт) 19:35

Задача вкратце звучит так: независимо от разрешения монитора, выводить окно с пропорционально масштабированными элементами. Причем это может быть как 17" монитор с разрешением 1280*1024, так и телевизор с его 720*576 (или сколько у них там, не знаю пока). Соответственно, мне нужно, чтобы относительные размеры элементов всегда оставались примерно одинаковыми (плюс-минус не играет).

Задача решается тривиально в случае одного монитора в системе. Однако, видится некоторое затруднение при подключении в качестве второго монитора того же телевизора с его крайне мелким разрешением и, в общем случае, недетской диагональю (как правило, монитор дороже телика с тем же размером экрана). В первую очередь вызывает подозрение указанная в сабже пара свойств.

В .NET, как я выяснил, у объекта Screen имеется свойство-коллекция AllScreens. В шестерке ничего такого нет. Кто-нить в курсе, у меня будут проблемы при использовании этих факторов пересчета? Ибо программа, как я понимаю, в общем случае не знает, на какой именно монитор попадает та или иная форма. А если вообще на стык, тогда как?

В принципе, когда я закончу алгоритмы и возьмусь за юзабилити, я сам смогу детально выяснить этот вопрос. Но, как вы понимаете, хотелось бы подстелить заранее...
Спасибо.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 06.04.2006 (Чт) 20:00

Ну, посмотри в сторону EnumDisplayMonitors/GetMonitorInfo...
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.04.2006 (Чт) 20:03

Ennor, не завидую я тебе :)

А по сабжу -- в данном случае я сколее всего использовал ScaleMove=vbCustom, а уже высоту и ширину вьюпорта использовал фиксированную.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.04.2006 (Чт) 23:44

alibek, мысль интересная, да. Но сразу же вылезает возможная проблема - соотношение сторон не является константой. Широкоэкранный монитор/телевизор - и все шрифты начинают толстить.
Я так понимаю, что все сводится к проблеме "как получить физические данные об устройстве, которое их никому никак не сообщает". Ибо как телевизор сможет ответить на PnP, будучи подключен через композитный тюльпан?..

Н-да. В общем, если что-нибудь раскопаю - отпишу.

BV: без этих функций я бы даже с места не сдвинулся, это и так понятно. Проблема в том, что они понятия не имеют о твипах...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.04.2006 (Пт) 0:02

Ну тебе по любому придется принять какие-то аксиомы. Одна из них, то что пиксел квадратный, вполне допустима. И соотношение сторон можно находить во соотношению высоты и ширины дисплея. А уж высоту/ширину можно узнать через GetDeviceCaps или GetMonitorInfo.

Кстати, а разве широкоформатный телевизор не должен адаптировать картинку 4:3 к 16:9 своими силами? Такая адаптация вроде бы достаточно цивильно выглядит, без сильных искажений.
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 07.04.2006 (Пт) 9:56

alibek писал(а):Ну тебе по любому придется принять какие-то аксиомы. Одна из них, то что пиксел квадратный, вполне допустима.

Интересная идея, надо будет подумать...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 61

    TopList