Реклама

Тег → qgraphicsscene

  • EVILEG
  • Статья
  • 27 июля 2017 г. 19:55

Qt/C++ - Урок 070. Обрезка изображения с помощью QGraphicsScene

qgraphicsscene, Qt, Image, crop

Напишем небольшое приложение, которое позволит обрезать изображение с помощью QGraphicsScene . При этом обрезка изображения будет производиться так, чтобы получался квадрат. То есть, чтобы изображение было всегда квадратным (Добавим этот функционал, чтобы просто было интереснее).

В приложении будет добавлена графическая сцена, на которую через QFileDialog будет добавляться изображение. Также будет QLabel, в который будет добавляться вырезанная часть изображения. Обрезка изображения будет производиться с помощью объекта QGraphicsRectItem .

Механизм вырезания следующий:

  1. При левом клике мышью по изображению создаётся квадрат выделения.
  2. При зажатой ЛКМ масштабируем квадрат.
  3. При отпускании уничтожаем объект выделения, вырезав с графической сцена часть изображения.

При отпускании ЛКМ будут взяты параметры выделения, а именно QRect , с помощью которого можно будет вырезать требуемую область изображения.

Приложение будет выглядеть следующим образом:

  • Creator
  • Вопрос
  • 3 января 2017 г. 12:09

Скорость объекта зависит от размера виджета

qt, qgraphicsscene, qgraphicsitem

Скорость объекта зависит от размера виджета, чем меньше виджет, тем выше скорость. Нажатие клавиш считывается через таймер. Как сделал статическую скорость?

  • folax
  • Вопрос
  • 15 сентября 2016 г. 13:37

QGraphicsScene QGraphicsItem QgraphicsView

qgraphicsscene, QGraphicsView, Qt

Добрый день Евгений, изучаю ваши уроки про рисование в среде Qt. Пытаюсь написать игру сапёр, начал с графики и остановился. У меня получилось создать поля с минами фиксированного размера, но моя цель сделать так же как и в Сапёре который идёт в Windows 7. Хочется сделать виджет который будет динамически перерисовывать элементы при увеличении экрана. На сцену ложатся по координатам внутри этого прямоугольника элементы. Есть система координат сцены которая задаётся например

QGraphicsScene *m_scene;
m_scene->setSceneRect(0, 0, 220, 240);

То есть наша область для отрисовки указанна. Я подобрал размер исходя из минимального значения виджета. А как быть когда размер виджета меняется, нужно ли увеличивать размер сцены ? Повторюсь, моя цель при увеличении окна программы пропорционально увеличивать элементы не выходя за пределы разрешения экрана по длине и ширине. Жду вашего ответа спасибо.

Заготовку проекта приложил. 

drawing-1.zip

  • Andrejus
  • Вопрос
  • 9 мая 2016 г. 15:16

Вопрос по QGraphicsScene и QGraphicsView – перерисовка объектов

qgraphicsscene, QGraphicsView, QHash, QMap, Qt

Доброго вам времени суток,
Работая с QGraphicsScene, возникает необходимость отображать большое количество однотипных элементов (item’ов) – порядка миллионов квадратов (rectangle’ов 7х7 ). Их прорисовка(scene->addRect) и удаление(scene->removeItem) занимает слишком большое кол-во времени, а она происходит периодически, скажем 0,3 сек . Вопрос, как можно было бы это оптимизировать?
У меня есть мысль прорисовывать только те, что находятся в видимой части сцены. Ну может с каким-то запасом. А передвигаясь в “новые области” дорисовывать оставшиеся. Проблема как узнать координаты видимой части QGraphicsScene или QGraphicsView ?
Если у вас есть другие мысли по поводу оптимизации этой задачи, буду рад услышать.
  • Andrejus
  • Вопрос
  • 25 апреля 2016 г. 18:01

Как удалить Item из QGraphicsScene просто нажав на него мышью

qgraphicsrectitem, qgraphicsscene, Qt

Добрый день,
Ни как не могу осуществить удаление QGraphicsRectItem из QGraphicsScene просто кликнув по нему мышью.
Цель программы кликая мышкой по scene создавать точки(rectangle), если нажимаем на уже созданную точку- удаляем ее. (Координаты точек, как поставленных так и удаленных будут использоваться.)
  • Elena
  • Вопрос
  • 12 апреля 2016 г. 13:04

Qt урок 44. Сохранение QGraphicsScene в SVG

qgraphicspathitem, qgraphicsscene, qgrpaphicsrectitem, qt урок 40, svg

Евгений, просмотрела урок 44 о сохранении объектов … в файл SVG.
Скачала исходники и результата ожидаемого не получила.
В запомненном файле нет ни одной строки с rect. Вместо этого ” d=”M10,50 L110,50 L110,100 L10,100 L10,50″/>

Наткнулась на ваш урок и попыталась получить результат.
QT недавно стала использовать.
На самом деле меня интересовал больше урок 41 – это почти то, что мне нужно сделать в своей программе.

Дело в версии? настройках? Где смотреть?

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="141.111mm" height="141.111mm"
 viewBox="0 0 400 400"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"  version="1.2" baseProfile="tiny">
<title>SVG Example</title>
<desc>File created by SVG Example</desc>
<defs>
</defs>
<g fill="none" stroke="black" stroke-width="1" fill-rule="evenodd" stroke-linecap="square" stroke-linejoin="bevel" >
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="#ff0000" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="2" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<path vector-effect="none" fill-rule="evenodd" d="M10,50 L110,50 L110,100 L10,100 L10,50"/>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="#0000ff" fill-opacity="1" stroke="#000000" stroke-opacity="1" stroke-width="2" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
<path vector-effect="none" fill-rule="evenodd" d="M150,100 L265,100 L265,175 L150,175 L150,100"/>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
 
<g fill="none" stroke="#000000" stroke-opacity="1" stroke-width="1" stroke-linecap="square" stroke-linejoin="bevel" transform="matrix(1,0,0,1,0,0)"
font-family="MS Shell Dlg 2" font-size="8.25" font-weight="400" font-style="normal" 
>
</g>
</g>
</svg>

 

Реклама
  • JaJay
  • 17 декабря 2017 г. 5:16

C++ - Тест 002. Константы

  • Результат 58 баллов
  • Очки рейтинга -2
  • JaJay
  • 17 декабря 2017 г. 4:55

C++ - Тест 001. Первая программа и типы данных

  • Результат 93 баллов
  • Очки рейтинга 8
  • JaJay
  • 17 декабря 2017 г. 4:48

C++ - Тест 001. Первая программа и типы данных

  • Результат 66 баллов
  • Очки рейтинга -1
Последние комментарии
  • EVILEG
  • 7 декабря 2017 г. 9:47

Django - Урок 011. Добавление комментариев на сайт с Django

Визуальный пример чего? комментариев? При ответе на конкретный комментарий рядом с ником отвечающего будет стрелочка и указание ник другого пользователя. Который будет ссылкой на коммента...

  • Bernar
  • 7 декабря 2017 г. 9:24

Django - Урок 011. Добавление комментариев на сайт с Django

есть визуальный пример ?

  • EVILEG
  • 6 декабря 2017 г. 11:30

Django - Урок 011. Добавление комментариев на сайт с Django

Да, так будет даже лучше, я на сайте уже обновил до такого вида код Вот это уже не нужно if request.method == 'POST': Поскольку Вы и так используете метод post, то есть эта про...

  • Bernar
  • 6 декабря 2017 г. 11:19

Django - Урок 011. Добавление комментариев на сайт с Django

сделал немного по другому class EArticleView(View): template_name = 'knowledge/article.html' comment_form = CommentForm def get(self, request, *args, **kwargs): ...

Сейчас обсуждают на форуме
  • EVILEG
  • 16 декабря 2017 г. 17:23

Пауза в многопоточности

QFuture, который возвращается QtConcurrent::map имеет методы pause() и resume() и теоретически должен поддерживать этот функционал. Но для Qt...

  • Миша
  • 15 декабря 2017 г. 11:26

Как найти в QVector макс и мин

Спасибо

  • Galant
  • 14 декабря 2017 г. 19:58

LPT

Понял! Спасибо!

  • EVILEG
  • 14 декабря 2017 г. 13:38

QCustomPlot можно ли построить прерывистую линию на одном графике?

Во-первых: В pro файле проект по идее достаточно указать следующий define для включения возможности рендеринга через OpenGL DEFINES += QCUSTOMPLOT_USE_OPENGL И во вторых:...

  • EVILEG
  • 13 декабря 2017 г. 8:05

В многопоточности выполнять действие только в одном из потоков

Статическиe методs QThread::currentThread(); и QThread::currentThreadId() могут возвращать указатель на поток и его handle id соответственно. Можете попробовать через как...