Я должен нарисовать миллиметровую сетку на моем виджете. Существует ли какой-либо класс, который может помочь мне сделать это? Мне нужно, чтобы он рисовал некоторые математические диаграммы.Миллиметровая бумага в Qt
ответ
Перед тем как изобретать колесо, пожалуйста, учтите некоторые графические библиотеки как discussed here. И QCustomPlot
, и Qwt
легко включить, а не так сложно настроить. Оба варианта дают несколько примеров; возможно, одним из них может стать решение проблемы.
Если имеющиеся библиотеки не отвечают вашим потребностям вы можете создать собственное решение по подклассовQWidget
и ПереопределениеpainEvent()
. QPainter
и QPainterPath
являются ключевыми классами для задачи. Qt
содержит много interesting tutorials, особенно «Пример основного чертежа» и «Пример путей рисования». Вероятно, вам также понравится this simple example или this one. Начиная с этих ссылок, вы сможете легко нарисовать сетку.
Наконец, Graphics View Framework содержит QGraphicsScene
, который (со ссылкой на документы)
обеспечивает поверхность для управления большим количеством 2D графических элементов.
Такой класс был использован для charting purposes и grids, используя API для рисования, введенные выше. При использовании этого класса крайне важно гарантировать общую хорошую производительность, провести сетку в функции drawBackground()
, как это сделано, например, here (или использовать фоновое растровое изображение).
Все API, обсуждали работу в пикселей. Если вы действительно обеспокоены точным изображением миллиметров на экране, вы можете использовать объект QScreen
, непосредственно доступный из вашего указателя qApp
. Он предоставляет несколько функций, в частности physicalDotsPerInch()
(logicalDotsPerInch()
для Android, поскольку другой возвращает бесконечное значение на KitKat). Пиксельное приближение для миллиметра может быть рассчитано следующим образом:
int dotPerMillimeter = qRound(qApp->primaryScreen()->physicalDotsPerInch()/25.4)
Спасибо за ваш ответ. К сожалению, я не могу использовать Qwt и т. Д., Чтобы достичь этого в моем проекте. Но ваша формула может быть полезна. Спасибо – Tatarinho
Я вижу. Ну, рассмотрим также [этот хороший ответ] (http://stackoverflow.com/questions/26828636/efficiently-painting-physically-accurate-ruler-in-qt). Цель состояла в том, чтобы нарисовать линейку, но вы можете использовать это (и мою формулу) для достижения своей цели. – BaCaRoZzo
- 1. бумага коррекция
- 2. Бумага Складная анимация в Android
- 3. Скамья, бумага, ножницы в MATLAB
- 4. Скамья, бумага, ножницы в JavaScript
- 5. Скалы, бумага, ножницы в vb.net
- 6. Скалы, бумага, ножницы в jQuery
- 7. POLYMER: Вложенная бумага-бумага под бумажным предметом отключает пробел
- 8. Создание полупрозрачной темы. Бумага
- 9. Полимер - позиционирующая бумага-fab?
- 10. Facebook Бумага как анимация
- 11. Бумага, Рок и ножницы
- 12. Сканирующая бумага Scissor Python
- 13. Другая скала, бумага, ножницы
- 14. Гибкая бумага не прокручивается
- 15. Бумага скрепки не загружается
- 16. Сканирующая бумага Необходимые ножницы
- 17. полимерная бумага-input form.checkValidity()
- 18. Рок, Бумага, Ножницы - Python
- 19. Бумага, скала, ножницы (C#)
- 20. Печать обычного текста на принтер (бумага)
- 21. Сканирующая целевая бумага для оценки
- 22. центральная бумага-диалог при открытии
- 23. Бумага «Unfold» Анимация на UIView
- 24. SSRS личной бумага проблема размера
- 25. Полимерная бумага-диалог не центрирован
- 26. Где находится полимерная бумага-button.html?
- 27. Полимерная бумага-диалог на iOS
- 28. Python Глобальные переменные Прошлая бумага
- 29. Java: Бумага, Скала, Ножницы GUI
- 30. Скала, бумага, ножницы, ящерица, spock
При рисовании элементов на экране компьютера вы указываете рисунок в пикселях, а не в миллиметрах. Вы нацелены на то, что вы можете печатать на принтере в миллиметрах, или пытаетесь добиться точного миллиметрового размера экрана? – docsteer
Вам нужно знать разрешение экрана и физическую ширину и высоту экрана, чтобы знать, как отображать пиксели. –
Im пытается достичь точного размера миллиметра на экране. – Tatarinho