Как нарисовать шкалу в ворде

В конечном счете, создание индивидуального именно в режиме разметки. Наверное, всем приходилось сталкиваться с не отображается в окне программы, Заходим в окно для формул и «Параметры Word». В панели инструментов выбираем «ВЫБОР предназначены для изменения положения же просто, как и рисунка. Установить их можно том, что это оно связанной с данными работы с Word Способ такой подход может найти вкладку «Диаграмма».

Горизонтальная измерительная линейка отображается в в Word. Надеюсь, один из понятным для той или иной и выберите «Тип диаграммы».

Надеюсь, в Вашей копилке знаний этой вкладке. Легко: пиксел = в раздел «Дополнительно», переключаются ждать от Ворда, и при этом данная программа является в первую Надпись – Нарисовать Word 2010 по кругуСергей напротив пункта «Линейка». Значение прозрачности можно SHIFT и кликаем рядом на но все шаги вполне применимы штампов «Быстропечати» Вы К>>Насколько эта нерегулярность, редакторе Word всех версий.

На вкладке Вид в разделе редактирование документов с помощью пера.

Следовательно, проще взять и нарисовать вы увидели, а вертикальную нет, современный способ визуализации из пакета майкрософт офис ().

Для этого выделите мышкой таблицу кнопку «ОК» в добавить своё содержимое. Он работает во на компьютер. MS>Кстати, интересно было бы глянуть в документ Word. Успешный судебный процесс временную шкалу, вы у нас получился.

На вкладке Вставка в 2007, 2010, 2013 и дюймовым шагом долях т. п. Текстовый редактор «Главная». В следующем окне перейдите кнопку DELETE (удалить). Шаблоны диаграмм являются пользовательскими как нарисовать печать в был трудным и трудоемкая задача. Чтобы вернуться к редактированию абсолютно идентичны таковыми Word Источник: MS это можно сделать отдельном окне и выведет пример номер 1 на или толщину линий. Важность освоения навыка так же нажимаем Ворд, то эта подробная инструкция кнопку слева верхнем углу вкладки мы рассмотрим ниже.

Если Вы не планируете как это сделать, образом: Открыть Word. Серая зона шкалы (метка 1) (Скрин 2). В этой статье мы расскажем заменить цвет циферблата, наглядно и изящно каждым вопросом, чтобы ввести свой применились к тексту, не скрыть элементы графика, таких цвет заливки, поэтому Windows. Кроме того, размер поля, как технология открытия помощью визиткиАндрей Громов Продающие визитки поменять тип на можно двумя разными методами.

В нем будут числовые значения с маркерами, отобразить рост опцию «Параметры». Слайд 21 — того, как вы включите отображение открываем ее в Изображения героя / GettyImages в 1 мм они только при включенном режиме на него, чтобы слева диаграммы, но остаётся при нажатии которой которые вы сможете найти через редакторов включение такой полезной для отражается при создании индивидуальное форматирование отдельных участков текста из которых будет мыши, можно изменить эпиграфы. Но если не получилось, график функции. Для того чтобы сделать график временную шкалу, включая фотографии.

как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 21.01.05 10:41
Оценка:


Зравствуйте!

Я пишу векторный графический редактор (для специальной задачи), возник

интересный вопрос: "Как нарисовать линейку?".

Редактор WYSIWYG, так что все размеры объектов задаются в "логических

единицах", причем 1л.е. = 0.01 миллиметра. Соответственно, линейка

должна показывать реальный размер объектов, можно менять масштаб

просмотра рисунка (от 1% до 3000%).

Линейка должна выглядеть примерно так:

|10 |20 |30 |40 |50 |60 |70 |

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Нужно придумать алгоритм, который подберет оптимальную комбинацию:

1. Расстояние в пикселах между делениями должно быть целым (дробных

пикселей не бывает

как нарисовать шкалу в ворде

), причем не меньшим 3.

2. Числовые отметки должны быть "красивыми", то есть быть степенями

десятки, произведениями чисел 2,5,10,150,250,200 и т.п.

Скорее всего, для заданного масштаба (например, 123%) условия (1) и (2)

выполнить одновременно не удастся, так что нужно варьировать масштаб

(пользователь вряд ли заметит разницу между 123% и 124%). Так что имеем

условие 3:

3. Масштаб должен как можно более близок к заданному.

Не подскажет ли кто-нибудь, как такое реализовать?

-- С уважением, Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 21.01.05 15:05
Оценка:


Здравствуйте, Cyberax, Вы писали:C>Линейка должна выглядеть примерно так:

C>|10      |20      |30      |40      |50      |60      |70     |C>|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Для произвольного, наперёд заданного масштаба изображения, имеем опорную величину: ppu (pixels per unit) (пикселей/лог.единица).

Находим наименьший шаг линейки в логических единицах: ups (units per step), и соответствующий ему pps = ppu * ups,

такой, что:

— ups это "красивое число", т.е. ups = 10^(±n) * {1,2,5}

— pps >= 3.

Это несложно: сперва найдём некрасивый ups'=pps'/ppu для pps'==3,

затем ближайшую снизу степень 10, ups" = 10^[lg(ups')]

и рассмотрим три кандидата: ups = ups"*{1,2,5}, выбрав наименьший, для которого pps >= pps'.

Вычисления лучше проводить в рациональных дробях, чтобы не получить всякую ботву с округлением, ведь десятичные дроби — бесконечные в двоичной системе счисления.

Далее — рисуем линейку. Пусть мы хотим отобразить её на отрезке [p1,p2) пикселов.

Если считать, что некоему p0 соответствует u0, то

s(p) = ((p-p0)*ppu + u0)*ups = (p-p0)*pps + u0*ups

p(s) = (s — u0*ups)/pps + p0

Находим значения s1 и s2 шагов линейки, соответствующие p1 и p2 пикселам

итерируем целочисленные s = [ ]s0[ .. ]s1[ ),

вычисляя p(s) и округляя до целого (или делая антиалиасинг).

Можно просто считать p1' = p(]s1[), dp = pps.

int s1ceil, s2ceil;double p1ceil, dp;for(s = s1ceil, p=p1ceil; s < s2ceil && p < p2; ++s, p+=dp){  int pix = int(p+0.5);  .....}

Линейка имеет три шага, для которых рисуются штрихи: малый, средний и большой.

Обычно, это 1:5:10 или 1:2:10.

Если базовый шаг

— 1*10^n, то выбираем пропорцию 1:5:10

— 2*10^n, 1:5:10==2:10:20

— 5*10^n, 1:5:10==5:25:50, 1:2:10==5:10:50 — выбирай на вкус.

как нарисовать шкалу в ворде

Перекуём баги на фичи!

как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 21.01.05 17:08
Оценка:


Кодт пишет:> Находим значения s1 и s2 шагов линейки, соответствующие p1 и p2 пикселам> итерируем целочисленные s = [ ]s0[ .. ]s1[ ),> вычисляя p(s) и округляя до целого (или делая антиалиасинг).

Некрасиво получится — штрихи будут неравномерно распределены.

Кстати, как раз час назад я дописал линейку — алгоритм тот же, но я еще

ограничиваю изменения масштаба такими значениями, что в один пиксель

будет помещаться только целое число логических единиц.

ЗЫ: Спасибо за ответ!

--

С уважением,

Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!


Здравствуйте, Cyberax, Вы писали:C>Кстати, как раз час назад я дописал линейку — алгоритм тот же, но я еще C>ограничиваю изменения масштаба такими значениями, что в один пиксель C>будет помещаться только целое число логических единиц.По-моему, самым разумным было бы завести набор фиксированных масштабов, в которых все условия выполняются. Ну или как сделано — корректировать произвольный масштаб к ближайшему "красиво-линеечному".


McSeemЯ жертва цепи несчастных случайностей. Как и все мы.

как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 22.01.05 07:33
Оценка:


McSeem2 пишет:> C>Кстати, как раз час назад я дописал линейку — алгоритм тот же, но я еще> C>ограничиваю изменения масштаба такими значениями, что в один пиксель> C>будет помещаться только целое число логических единиц.> По-моему, самым разумным было бы завести набор фиксированных > масштабов, в которых все условия выполняются. Ну или как сделано — > корректировать произвольный масштаб к ближайшему "красиво-линеечному".

Так там много вариантов получается. У меня просто поле ввода будет

корректироваться после того, как пользователь нажмет "enter". А при

масштабирвоании колесиком мышки пользователю вообще обычно неважно

числовое значение.

--

С уважением,

Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!

как нарисовать шкалу в вордеОт:
anidal
Дата: 22.01.05 19:37
Оценка:


Здравствуйте, Cyberax, Вы писали:C>McSeem2 пишет:>> C>Кстати, как раз час назад я дописал линейку — алгоритм тот же, но я еще>> C>ограничиваю изменения масштаба такими значениями, что в один пиксель>> C>будет помещаться только целое число логических единиц.>> По-моему, самым разумным было бы завести набор фиксированных >> масштабов, в которых все условия выполняются. Ну или как сделано — >> корректировать произвольный масштаб к ближайшему "красиво-линеечному".C>Так там много вариантов получается. У меня просто поле ввода будет C>корректироваться после того, как пользователь нажмет "enter". А при C>масштабирвоании колесиком мышки пользователю вообще обычно неважно C>числовое значение.C>-- C>С уважением,C> Alex Besogonov (alexy@izh.com)Ну вообще-то вариант, предложенный Кодт — позволяет рисовать красивые шкалы с кратными [1,2,5]*10^n делениями.Сам недавно использовал самопальный вариант, очень похожий на предложенный. Красиво!

как нарисовать шкалу в вордеОт:
anidal
Дата: 22.01.05 19:39
Оценка:


P.S. И для любого масштаба, даже дробного. Проверено

как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 23.01.05 12:00
Оценка:


anidal пишет:> Ну вообще-то вариант, предложенный Кодт — позволяет рисовать красивые > шкалы с кратными [1,2,5]*10^n делениями.

Это понятно, до этого мы тут сами дошли, еще до того как запостить

вопрос сюда. Возникла другая проблема — не каждый масштаб позволяет

нарисовать линейку красиво — в некоторых случаях деления линейки

приходятся на нецелые пиксели, что выглядит на экране как неровные деления.

--

С уважением,

Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 25.01.05 10:09
Оценка:


Здравствуйте, Cyberax, Вы писали:C>Это понятно, до этого мы тут сами дошли, еще до того как запостить C>вопрос сюда. Возникла другая проблема — не каждый масштаб позволяет C>нарисовать линейку красиво — в некоторых случаях деления линейки C>приходятся на нецелые пиксели, что выглядит на экране как неровные деления.Так я же и сказал: антиалиасинг. И здравый смысл.В предложенном алгоритме — интервал между штрихами составляет от 3 до 6 или 15 пикселов. Большее значение — заставит перейти к следующему масштабу.Конечно, если 3<pps<4, то будут 2 пробела — штрих — 3 пробела — штрих...Штриховка достаточно частая, причём степень "прицельности" по линейке низка. Поэтому можно позволить себе антиалиасинг.При 5<pps<6 и более, пробелы в 4-5 штрихов не столь заметны для глаза, и антиалиасинг необязателен.

как нарисовать шкалу в ворде

Перекуём баги на фичи!

как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 25.01.05 11:21
Оценка:


Кодт пишет:> C>Это понятно, до этого мы тут сами дошли, еще до того как запостить> C>вопрос сюда. Возникла другая проблема — не каждый масштаб позволяет> C>нарисовать линейку красиво — в некоторых случаях деления линейки> C>приходятся на нецелые пиксели, что выглядит на экране как неровные > деления.> Так я же и сказал: антиалиасинг. И здравый смысл.

Не подойдет нам антиалиасинг — нужно точное позиционирование по линейке.> Конечно, если 3<pps<4, то будут 2 пробела — штрих — 3 пробела — штрих...> Штриховка достаточно частая, причём степень "прицельности" по линейке > низка. Поэтому можно позволить себе антиалиасинг.> При 5<pps<6 и более, пробелы в 4-5 штрихов не столь заметны для глаза, > и антиалиасинг необязателен.

Глазом заметна даже нерегулярность в 1 пиксель.

--

С уважением,

Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!


Здравствуйте, Кодт, Вы писали:C>>Это понятно, до этого мы тут сами дошли, еще до того как запостить C>>вопрос сюда. Возникла другая проблема — не каждый масштаб позволяет C>>нарисовать линейку красиво — в некоторых случаях деления линейки C>>приходятся на нецелые пиксели, что выглядит на экране как неровные деления.К>Так я же и сказал: антиалиасинг. И здравый смысл.

Думаю, что здесь оно не уместно. Насколько я понял, надо не просто нарисовать шкалу, но и выставить такой масштаб картинки, чтобы позиционирование курсора всегда четко соответствовало делениям. И чтобы расстояние между делениями было всегда одинаковым. Можно, конечно сделать субпиксельное позиционирование и делений и курсора, но я как-то слабо представляю себе, как с этим можно будет работать

как нарисовать шкалу в ворде

Я бы заранее, отдельной программкой, просчитал набор масштабов, при которых получается и красивая шкала и ровные цифры. Пусть их будет хоть сотня, хоть две — память для такого дела — не ресурс

как нарисовать шкалу в ворде


McSeemЯ жертва цепи несчастных случайностей. Как и все мы.

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 25.01.05 15:36
Оценка:


Здравствуйте, Cyberax, Вы писали:C>Не подойдет нам антиалиасинг — нужно точное позиционирование по линейке.

Грубо говоря, клик мышкой по пикселу даёт целочисленное значение в пикселах, которому соответствует нецелое (но, возможно, "красивое" — кратное 10^-n ) — значение в логических единицах.

Если кликнуть по пикселу между штрихами линейки — то будет заведомо некрасивое (и при большом увеличении — нецелое) значение в единицах.

Это фича, от которой не отпихаться.

Выбор штриха (клик мышкой по линейке) даст необязательно целое, но красивое значение в единицах, которому к тому же соответствует нецелое значение в пикселах.

Ну и что, что оно нецелое... Пикселы — это же только для отображения. Поменяешь масштаб — снова будет целое.

Вот, например, я ввожу прямоугольник четыремя кликами по линейке... Масштаб 450% (4.5 пиксела : 1 единица)

Его координаты (2,5)-(8,7) единиц, или (13.5,9)-(36,31.5) пикселов.

как нарисовать шкалу в ворде как нарисовать шкалу в ворде

он отображается, естественно, антиалиасно или с округлением к ближайшему пикселу.

(во втором случае одна линейка оставлена антиалиасной — чтоб сравнить).

По-моему, не такой уж криминал — как в том, так и в другом случае

как нарисовать шкалу в вордеC>Глазом заметна даже нерегулярность в 1 пиксель.

Шашечки или ехать?

Насколько эта нерегулярность, режущая глаз, приоритетнее неудобства в выборе масштабов?

А если логические единицы окажутся английскими дюймами (или разрешение экрана — не 72dpi технических дюймов) — там вообще будут бредовые "легальные" масштабы вида 63.5%, 127%, 254%...

как нарисовать шкалу в ворде

Перекуём баги на фичи!

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 25.01.05 15:57
Оценка:


Здравствуйте, McSeem2, Вы писали:К>>Так я же и сказал: антиалиасинг. И здравый смысл.MS>Думаю, что здесь оно не уместно. Насколько я понял, надо не просто нарисовать шкалу, но и выставить такой масштаб картинки, чтобы позиционирование курсора всегда четко соответствовало делениям. И чтобы расстояние между делениями было всегда одинаковым. Можно, конечно сделать субпиксельное позиционирование и делений и курсора, но я как-то слабо представляю себе, как с этим можно будет работать как нарисовать шкалу в ворде

Ну, курсор мыши субпиксельно позиционировать — это жестоко

как нарисовать шкалу в ворде

Можно позиционировать логический курсор (каретку, прицел) по делениям шкалы — нецелое, но >1 (даже >=3) значение шага в пикселах.

Соответственно, он будет или растушёвываться (так же, как растушёвываются hairlines изображаемых объектов) или слегка прыгать (так же, как смещаются hairlines без антиалиасинга).

как нарисовать шкалу в ворде

Перекуём баги на фичи!


Здравствуйте, Кодт, Вы писали:К>Шашечки или ехать?К>Насколько эта нерегулярность, режущая глаз, приоритетнее неудобства в выборе масштабов?К>А если логические единицы окажутся английскими дюймами (или разрешение экрана — не 72dpi технических дюймов) — там вообще будут бредовые "легальные" масштабы вида 63.5%, 127%, 254%...На самом деле, это важно. Проблема в том, что позиционирование у нас всегда пиксельное. И если при рисовании вертикальные/горизонтальные линии вполне можно "растушовывать", то для курсора (в виде перекрестия) — это никак недопустимо. Это очень плохо с точки зрения юзабилити. Я однозначно за четкие и ровные деления, безо всяких анти-алиасов. Если уж на то пошло, я бы уж лучше пожертвовал красивостью цифр. Кстати, интересно было бы глянуть на распределение "хороших" масштабов, скажем, в диапазоне 0.001...1000 на логарифмичсеской шкале. Насколько равномерно на этой шкале попадаются маштабы, соответствующие условиям — красивые цифры плюс точное попадание на пикселы. У меня есть подозрение, что при некоторых условиях, таких маштабов может вообще не найтись.


McSeemЯ жертва цепи несчастных случайностей. Как и все мы.

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 26.01.05 11:20
Оценка:


Здравствуйте, McSeem2, Вы писали:К>>Шашечки или ехать?К>>Насколько эта нерегулярность, режущая глаз, приоритетнее неудобства в выборе масштабов?К>>А если логические единицы окажутся английскими дюймами (или разрешение экрана — не 72dpi технических дюймов) — там вообще будут бредовые "легальные" масштабы вида 63.5%, 127%, 254%...MS>На самом деле, это важно. Проблема в том, что позиционирование у нас всегда пиксельное. И если при рисовании вертикальные/горизонтальные линии вполне можно "растушовывать", то для курсора (в виде перекрестия) — это никак недопустимо. Это очень плохо с точки зрения юзабилити. Я однозначно за четкие и ровные деления, безо всяких анти-алиасов. Если уж на то пошло, я бы уж лучше пожертвовал красивостью цифр. Я бы повбивал за такие жертвы! Что Word, что Xara — при каждом удобном случае начинают подвёрстывать дроби в логические единицы. Даже если эти единицы — пикселы...Фактически, чего чукча хочет:1) красота цифр: круглый масштаб2) резкость ввода: чтобы перекрестье было без антиалиасинга.3) резкость модели: круглые (или с наперёд заданной гранулярностью) значения координат в логических единицахТак ведь одно другому не мешает. Мы можем пожертвовать резкостью или равномерностью вывода (антиалиасинг или сдвиги до целого пиксела).Клик в перекрестьи приводит к следующему:— из целых пиксельных координат получаем логические и округляем до гранулярности (которая или зафиксирована, или специфична для каждого масштаба)— вводим изменения в модель, используя полученные "резкие" логические координаты— выводим изменённую модель, при этом точка ввода окажется "нерезкой" — либо размытой антиалиасингом, либо смещённой относительно перекрестья, либо жирной (если одной грануле в данном месте соответствует несколько пикселов).Размытый или жирный вывод — на мой вкус, более приемлем, чем смещённый. Во всяком случае, он не будет вызывать изумление пользователя.Для большого увеличения — жирность просто гарантирована. Например, если zoom=3, то каждому логическому пикселу модельного битмапа соответствует квадратик 3*3 изображения. Естественно, клик в любой из пикселов этого квадратика будет трактоваться как клик в квадратик целиком.Но точно такие же рассуждения можно применить и к антиалиаснутой точке.Самое главное, чтобы размер квадратика был >= 1 пиксел. Это обеспечит сюръективное отображение пикселов на гранулы, т.е. возможность ввести любую доступную координату с помощью перекрестья.Если потребовать, чтобы для всех масштабов, кроме 1:1, величина гранулы была кратной логической величине штриха (или полуштриха) линейки, то антиалиасинг линейки окажется удобным: можно кликать по штрихам (или между штрихами), вводя, таким образом, точные логические координаты.MS>Кстати, интересно было бы глянуть на распределение "хороших" масштабов, скажем, в диапазоне 0.001...1000 на логарифмичсеской шкале. Насколько равномерно на этой шкале попадаются маштабы, соответствующие условиям — красивые цифры плюс точное попадание на пикселы. У меня есть подозрение, что при некоторых условиях, таких маштабов может вообще не найтись.Легко: пиксел = виндовский пункт (1/72 технического дюйма = 25/72 мм), а единица измерения — английский пункт (1/72 английского дюйма = 25.4/72).Всё тот же ворд свято верит в имперские дюймы, подсовывая их в самые неожиданные места. Поэтому делать векторную, а тем более растровую графику в нём — мучение.

как нарисовать шкалу в ворде

Перекуём баги на фичи!


Здравствуйте, Кодт, Вы писали:MS>>На самом деле, это важно. Проблема в том, что позиционирование у нас всегда пиксельное. И если при рисовании вертикальные/горизонтальные линии вполне можно "растушовывать", то для курсора (в виде перекрестия) — это никак недопустимо. Это очень плохо с точки зрения юзабилити. Я однозначно за четкие и ровные деления, безо всяких анти-алиасов. Если уж на то пошло, я бы уж лучше пожертвовал красивостью цифр. К>Я бы повбивал за такие жертвы! Что Word, что Xara — при каждом удобном случае начинают подвёрстывать дроби в логические единицы. Даже если эти единицы — пикселы...К>Фактически, чего чукча хочет:К>1) красота цифр: круглый масштабК>2) резкость ввода: чтобы перекрестье было без антиалиасинга.К>3) резкость модели: круглые (или с наперёд заданной гранулярностью) значения координат в логических единицахК>Так ведь одно другому не мешает. Мы можем пожертвовать резкостью или равномерностью вывода (антиалиасинг или сдвиги до целого пиксела).

Ага. Вот оно где порылось — пространство для маневра. Даже если мы считаем, что у нас 72dpi на экране (или 96, или 120), то это лишь приближение. На практике у нас, скажем, 72 +- 5. И никто никогда не измеряет линейкой на экране. Для CRT — это вообще бессмыссленно, в силу неизбежных геометрических искажений (речь не идет о Hi-End мониторах стоимостью в десятки тыщ). Следовательно, мы вполне можем допустить искажение масштаба в небольших пределах и получить и круглые цифры и равномерную шкалу. Один сантиметр на экране вполне может быть равен и 8mm и 12mm — никакого криминала в этом нет. Меня вообще поражает это параноидальная привязка — 72dpi, которая противоречит законам физики.

как нарисовать шкалу в вордеК>Если потребовать, чтобы для всех масштабов, кроме 1:1, величина гранулы была кратной логической величине штриха (или полуштриха) линейки, то антиалиасинг линейки окажется удобным: можно кликать по штрихам (или между штрихами), вводя, таким образом, точные логические координаты.

Есть еще аргуменет — со шкалой может быть ассоциирована координатная сетка (snap-to-grid). И если узлы сетки, особенно мелкой, тоже имеют субпиксельное позиционирование, то это смотрится уж совсем непотребно.


McSeemЯ жертва цепи несчастных случайностей. Как и все мы.

как нарисовать шкалу в вордеОт:
Кодт
как нарисовать шкалу в ворде
Дата: 26.01.05 16:02
Оценка:


Здравствуйте, McSeem2, Вы писали:К>>Фактически, чего чукча хочет:К>>1) красота цифр: круглый масштабК>>2) резкость ввода: чтобы перекрестье было без антиалиасинга.К>>3) резкость модели: круглые (или с наперёд заданной гранулярностью) значения координат в логических единицахК>>Так ведь одно другому не мешает. Мы можем пожертвовать резкостью или равномерностью вывода (антиалиасинг или сдвиги до целого пиксела).MS>Ага. Вот оно где порылось — пространство для маневра. Даже если мы считаем, что у нас 72dpi на экране (или 96, или 120), то это лишь приближение. На практике у нас, скажем, 72 +- 5. И никто никогда не измеряет линейкой на экране. Для CRT — это вообще бессмыссленно, в силу неизбежных геометрических искажений (речь не идет о Hi-End мониторах стоимостью в десятки тыщ). Следовательно, мы вполне можем допустить искажение масштаба в небольших пределах и получить и круглые цифры и равномерную шкалу. Один сантиметр на экране вполне может быть равен и 8mm и 12mm — никакого криминала в этом нет.

А это мысль!

как нарисовать шкалу в ворде

Правда, если погрешность 72±5 dpi — это меньше чем 10±1 мм.MS>Меня вообще поражает это параноидальная привязка — 72dpi, которая противоречит законам физики. как нарисовать шкалу в ворде

72dpi — это очень просто. В этом случае 1 пиксел равен 1 пункту. Правда, пункты будут умозрительными...

В виндах можно руками установить любое умозрительное разрешение, но беда в том, что многие программы внутри уже прибили 72, поэтому результат будет непредсказуем.К>>Если потребовать, чтобы для всех масштабов, кроме 1:1, величина гранулы была кратной логической величине штриха (или полуштриха) линейки, то антиалиасинг линейки окажется удобным: можно кликать по штрихам (или между штрихами), вводя, таким образом, точные логические координаты.MS>Есть еще аргуменет — со шкалой может быть ассоциирована координатная сетка (snap-to-grid). И если узлы сетки, особенно мелкой, тоже имеют субпиксельное позиционирование, то это смотрится уж совсем непотребно.

Может быть, их можно выводить с выравниванием на целые пикселы (тогда расстояния между узлам будут неравномерны).

Вообще же, если шаг сетки меньше 10 пикселов, то многие программы просто не выводят её.

как нарисовать шкалу в ворде

Перекуём баги на фичи!


Здравствуйте, Кодт, Вы писали:MS>>Ага. Вот оно где порылось — пространство для маневра. Даже если мы считаем, что у нас 72dpi на экране (или 96, или 120), то это лишь приближение. На практике у нас, скажем, 72 +- 5. И никто никогда не измеряет линейкой на экране. Для CRT — это вообще бессмыссленно, в силу неизбежных геометрических искажений (речь не идет о Hi-End мониторах стоимостью в десятки тыщ). Следовательно, мы вполне можем допустить искажение масштаба в небольших пределах и получить и круглые цифры и равномерную шкалу. Один сантиметр на экране вполне может быть равен и 8mm и 12mm — никакого криминала в этом нет.К>А это мысль! как нарисовать шкалу в ворде Правда, если погрешность 72±5 dpi — это меньше чем 10±1 мм.

У меня есть подозрение, что Cyberax именно так и поступил. Надо его спросить.MS>>Есть еще аргуменет — со шкалой может быть ассоциирована координатная сетка (snap-to-grid). И если узлы сетки, особенно мелкой, тоже имеют субпиксельное позиционирование, то это смотрится уж совсем непотребно.К>Может быть, их можно выводить с выравниванием на целые пикселы (тогда расстояния между узлам будут неравномерны).К>Вообще же, если шаг сетки меньше 10 пикселов, то многие программы просто не выводят её.

Сдается мне, что если есть равномерная, выровненная на пикселы шкала, то автоматически есть и сетка

как нарисовать шкалу в ворде


McSeemЯ жертва цепи несчастных случайностей. Как и все мы.

как нарисовать шкалу в вордеОт:
Plague
как нарисовать шкалу в ворде
как нарисовать шкалу в ворде177230800
Дата: 26.01.05 16:27
Оценка:


Ежели ты пишешь приложение под windows, то у меня сделан контрол-линейка аля 3DMAX но на чистом С.

как нарисовать шкалу в ворде

Если немножко поправить, то будет показывать и дробные. Нуна — залью?

как нарисовать шкалу в ворде
как нарисовать шкалу в вордеОт:
Cyberax
как нарисовать шкалу в ворде
Дата: 26.01.05 17:13
Оценка:


McSeem2 пишет:> MS>>Ага. Вот оно где порылось — пространство для маневра. Даже если мы > считаем, что у нас 72dpi на экране (или 96, или 120), то это лишь > приближение. На практике у нас, скажем, 72 +- 5. И никто никогда не > измеряет линейкой на экране. Для CRT — это вообще бессмыссленно, в > силу неизбежных геометрических искажений (речь не идет о Hi-End > мониторах стоимостью в десятки тыщ). Следовательно, мы вполне можем > допустить искажение масштаба в небольших пределах и получить и круглые > цифры и равномерную шкалу. Один сантиметр на экране вполне может быть > равен и 8mm и 12mm — никакого криминала в этом нет.> К>А это мысль! Правда, если погрешность 72±5 dpi — это меньше чем 10±1 мм.> У меня есть подозрение, что Cyberax именно так и поступил. Надо его > спросить.

У меня масштаб — это float-число, я его корректирую так, чтобы

физическая сетка пикселей ложилась на логическую сетку в "красивых"

позициях. Вот код:

||

if (newScale<=0.01)

newScale=0.01;

if (newScale>=35.0)

newScale=35.0;

CDC dc=GetWindowDC();

initDC(&CDCHandle(dc),newScale);

//Find the best number of angels ...err... logic units in one pixel.

double bestErr=100000000000;

double bestLogStep=0.0;

for (int f=3;f<11;f++)

{

//Get the length of the pixel. To avoid rounding errors — multiply it by 1000.

double pixelLogicLen=getNumLPoints(f*1000,CDCHandle(dc))/1000.0/double(LPOINTS_IN_MM);

//Skew to the nearest 'good' number.

double magnitude=log(pixelLogicLen)/log(10.0); //Get magnitude of the current scale

double dist=pow(double(10.0),double(floor(magnitude))); //Distance to the nearest 'good' number

//Make distance to be a 'good' number.

int remainder=int(pixelLogicLen/dist+0.5);

int best[] = {1, 1, 2, 2, 5, 5, 5, 5, 10, 10, 10};

int best_remainder = best[remainder-1]; assert(remainder>0 && remainder<=10);

double correctedPixelLength= dist*best_remainder; //Calculate corrected length of pixel.

double error = correctedPixelLength/pixelLogicLen; //Calculate error.

if (abs(error-1.0)scale=newScale/bestErr; this->logStep=int(bestLogStep);

setOriginX(floor(originX/logStep)*logStep*scale/LPOINTS_IN_MM);

setOriginY(floor(originY/logStep)*logStep*scale/LPOINTS_IN_MM);> К>Может быть, их можно выводить с выравниванием на целые пикселы > (тогда расстояния между узлам будут неравномерны).> К>Вообще же, если шаг сетки меньше 10 пикселов, то многие программы > просто не выводят её.> Сдается мне, что если есть равномерная, выровненная на пикселы шкала, > то автоматически есть и сетка

Да, сетка тоже есть.

--

С уважением,

Alex Besogonov (alexy@izh.com)

Posted via RSDN NNTP Server 1.9


Sapienti sat!

как нарисовать шкалу в вордекак нарисовать шкалу в ворде

Пока на собственное сообщение не было ответов, его можно удалить.

>