Flash-04 wrote: 30 Mar 2019 14:48
Как хорошо, я на днях выкинул толстенный мануал по Windows графике
По теме, я бы на dpi грешил. У меня был период когда я писал графическое приложение под Windows. Все графические примитивы там были, никогда с такой проблемой не сталкивался. Но и мониторов высокого разрешения тоже тогда не было. И кстати многие старые win приложения так и работают на новых мониторах: крошечные окошечки и шрифты.
Ну, шрифты я могу задавать любого размера, но мой ответ выше про DPI, похоже оказался не в теме, но я не совсем понимаю, что он может изменить. Ведь линии я могу рисовать любой толщины, как, впрочем, могу рисовать отдельные пиксели, но, на всякий случай скажите как менять (попытаюсь спросить у гугла).
Чтобы не быть голословным я приаттачил, мой графический код (Прикол. Всё-таки 1-е апреля на дворе. исправитель очепяток не знал слова "приаттачил" и предложил заменить его на исконное русское слово "присобачил". Я вежливо отказался). Это не секрет и некоммерческая работа. Если кому пригодится, буду рад. Тем более, буду рад дельным советам.
Там же есть и примерный код его использования с комментариями, но там и так, надеюсь всё примитивно. Написано на коленке, чтобы быстро выводить и манипулировать отображением спектра. Потом дописывались функции по просьбе пользователей и собственному наитию.
Что он делает:
1. Программа останавливается перед отображением, чтобы можно было раздвинуть окно или сразу выйти, если смотреть на это нет сил.
2. Программа может просматривать в одном запуске любое разумное число графиков (на сколько хватит памяти и терпения их листать), переключая их одной кнопкой +/-. Масштабирование по монитору происходит каждый раз при смене графика.
3. Автоматически масштабирует изображение под открытое окно так, чтобы каждому значению можно выделить, как минимум, одну линию и вместить значения по высоте (высота предполагается как 1/2 от ширины - это даёт нормально воспринимаемые пропорции).
4. изображение можно двигать вправо/влево на половину отображаемого окна. Правее названия названия отображаются границы с какого по какой элемент нарисован график.
Деления на осях не прорисовываются. Каюсь, недоработка, но по времени было не до "кистей".
5. Масштаб изображения можно увеличивать до 32 раз. Т.е. расстояния между отдельными линиями/точками увеличиваются/уменьшаются каждый раз в 2 раза. Изменение размера происходит от центра, если это возможно. Т.е. не приводит к нарушению границ при уменьшении масштаба. Масштаб меняется одновременно для всех графиков. Т.е. все другие графики будут отображены в том же масштабе, даже если они имеют другую длину.
6. Можно менять режим отображения - линиями или огибающей. Режим запоминается индивидуально для каждого графика.
7. Перед отображением все данные о сигнале помещаются в класс, в который помещаются сами данный и режимы отображения: длина данных, являются ли данные только положительными (в принципе, наверное, можно было определять автоматом), рисовать ли ось ординат (никогда не понимал откуда взялось эти дурацкие названия, в которых многие путаются), отображать ли график первоначально линиями (можно менять во время отображения на огибающую или наоборот) и, наконец, отображаемое в верхнем левом углу имя.
Подпрограмме передаётся массив структур.
P.S.
1. Если случайно изображение сдвинуть мышой или изменить размер консоли, то изображения частично затрётся или вообще исчезнет. Нажатие на любую кнопку перерисует график. Это прикол отображения графики в консоли.
2. Другой, более значимый недостаток - требуется окно делать на треть больше. Вообще, изображение точек, которые превышают w и h, но не выходят за пределы реального видимого окна рисуются без выдачи ошибки. Можно было бы этот фактор использовать, но я боюсь, что такое соотношение справедливо не для всех мониторов или настроек.
3. Подпрограмма chart(...) не дописано. Начал писать и отвлёкся. Так пока и осталось. Это всё "кисти".
plot.rar
You do not have the required permissions to view the files attached to this post.
Привет.