Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Решил открыть новую ветку, может продолжим тут, тем более хотелось бы разобраться в одной штуке, а инфы найти не могу, может кто даст ссылку на годную статью или по-простому огбъяснит мне, как решить данную задачу.
Пример такой, в Екселе если рисовать квадрат с одинаковой высотой и шириной необходимо указывать ширина=1, а высота=12 (примерно), и в целом конечно к этой непонятной системе координат можно привыкнуть, но, когда начинаешь пытаться сделать масштабирование, то тут уже не прокатит ширина=0,5, а высота=6... Хотелось бы разобраться как именно и почему екселька для ширины и высоты объектов использует разные единицы измерения? как найти правильно коэффициент между ними при любм масштабе. Я уже как-то задавал этот вопрос в какой-то ветке, но получил ответ, типа подбирай, я-то подобрал, но хотелосб бы разобраться, что не так с этим всем |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Высота строки всегда идёт в пикселях. Майкрософт считает, что в дюйме 72 пикселя (но не всегда, в фоксе - 96 пикселей на дюйм).
С шириной - всё гораздо хуже. Ширина столбца считается в средних ширинах символов для того шрифта, который выбран по-умолчанию для книги. В фоксе перевести ширину символа в пиксели можно с помощью FONTMETRIC(6, ...), только параметры шрифта надо правильно заполнить. Это майкрософт выпендривается: support.microsoft.com Это люди обходят как майкрософт выпендривается: www.vbaexpress.com |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Высота строки указывается в пунктах, ширина столбца - в символах. Вроде бы берется количество символов для шрифта размером 10 пунктов, но не ясно, для какого именно. Соотношение у меня 10 символов = 97 пикселей, но это, я так понимаю, зависит от разрешения экрана, а с пунктами соответствие надо выводить.
|
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Я пытаюсь сделать так:
Не могу разобраться, но так нифига не работает Действительно шрифт и его размер не совпадал с тем что я думал, нашёл как их считать, но всё равно нифига не работает:
Исправлено 1 раз(а). Последнее : AngelOKES, 20.02.19 08:27 |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Ну, если бы у майкрософта всё так прозрачно было, то это был бы не майкрософт.
Вроде так должно работать. У меня получается квадратная первая ячейка, но только если дефолтный стиль книги на первом месте.
Исправлено 1 раз(а). Последнее : pasha_usue, 20.02.19 09:58 |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Вот так вот более-менее получается ровно, но приходиться ширину полученную умножать ещё на 2,5 Фигня какая-то |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Значит, .ole1.Object.WebOptions.PixelsPerInch не возвращает реальный DPI экрана. Его надо как-то иначе получить. |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Вот функция Володи Максимова. Сравните, что выдаёт она, а что выдаёт PixelsPerInch.
|
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Если это делать просто в среде фокса, то 96 и 96
|
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
.ole1.Object.WebOptions.PixelsPerInch тоже 96? Тогда надо что-то дальше думать. |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Да тоже 96, проверил также и уже в запущенно программе, показатели все такие же
|
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Я поправил код. На самом деле, ширина уже получается в типографских пунктах. Высоту необходимо из пикселей переводить в пункты. Но, правда, вам это не поможет. |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Походу, что-то добавилось либо в Win10, либо в Excel 2016.
У меня тоже вертикальный коэффициент где-то 1.25, и горизонтальный 1.13 возникает. У меня два монитора. Когда на малый переходишь, вертикальный становится 1.0, а горизонтальный - 1/1.13 (наоборот). Ковырял GetDpiForMonitor и GetDeviceCaps. Ничего похожего там нет. PS. 1.13, 1.25 и 2.5 кратны друг-другу. Но что это такое - не понятно. Исправлено 1 раз(а). Последнее : pasha_usue, 20.02.19 12:02 |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Будем искать...
Я пока оставлю тот вариант, с подкрученным коэффициентом вроде работает и масштабирование нормально работает, но разобраться конечно же хотелось бы и да я пока тестирую только на одном мониторе, не знаю как это будет выглядить на другом |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
of63 Сообщений: 25256 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
|
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
OFF TOP
Некоторые "хотелки" юзеров вызывают... как бы это сказать помягче. Вот представим. Вызывает директор главбуха и говорит: - Отныне баланс делайте не только "обычными" числами, но и римскими. Я так хочу. Бух прибегает к программеру и говорит: - Надо срочно сделать баланс римскими числами. Программер чешет репу и пишет конвертер, выравнивает ячейки по ширине и высоте и т.п. Вот такие бывают "хотелки". |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Интересненько... Ну значит у меня стандартный 96 pdi
А не в этом ли у нас была ошибка? Мы же наоборот делили на 72 |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Очень похоже, что надо рассчитывать такую пропорцию: GetDeviceCaps(liHDC, VERTRES) / GetDeviceCaps(liHDC, DESKTOPVERTRES) Но для горизонтали опять не работает. |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Ошибка не в этом. Ошибка в контексте, в котором выполняется FONTMETRIC. Он выполняется для фокса, а надо для экселя. Я проверил, у меня для фокса и экселя GetDpiForWindow возвращает разные значения. Значит и GetTextMetrics должен выполняться в контексте экселя. И там мы получим другое значение. GetTextMetrix это API функция, на базе которой FONTMETRIC работает. |
Re: Соотношение ширины и высоты в Excel и масштабирование | |
---|---|
AngelOKES Автор Сообщений: 828 Дата регистрации: 08.02.2012 |
Не буду наверное новую тему открывать, эта тема в принципе вполне подходит...
Никак не могу сообразить как грамотно написать алгоритм перестройки координат объектов. Что дано: 1) Таблица с описанием всех объектов, есть их условные координаты, PnX и PnY, там что-то типа PnX=3, значит третий элемент по горизонтали (значит над ним есть ещё 2 объекта), PnY=1, значит данный объект в самой первой строчке и над ним ничего нет. 2) Есть так скажем центральные координаты выраженная в единицах, которые использует Excel, поля xCol и yRow, у первого элемента с координатами PnX=1 и PnY=1 они всегда будут равны 10 и 10, а дальше уже конечно же будут увеличены в зависимости от масштаба KFTR, и ширины и высоты предыдущих объектов (WiALl и HeAll). К примеру если у первого элемента будет стоять WiALl=10 и HeAll=10, то координаты для следующего объекта по горизонтали будут равны xCol=xCol+WiALl*(здесь будет определённый коэффициент, который будет вычисляться в зависимости от kftr), а yRow=yRow, если же по вертикали вниз, то yRow=yRow+HeAll*(здесь будет определённый коэффициент, который будет вычисляться в зависимости от kftr), а xCol=xCol. Теперь когда меняется общий коээфициент, мне необходимо пересчитать все координаты отличные от PnX=1 и PnY=1 и по вертикали и по горизонтали... Если кому-то будет интересно, но что-то будет неясно, то буду рад разъяснить какие-то моменты... Или могу создать новую ветку Исправлено 1 раз(а). Последнее : AngelOKES, 28.02.19 15:22 |
© 2000-2024 Fox Club  |