2013-07-07 2 views
0

Я должен вывести несколько точек в интерактивно выбранной области изображения. Я не знаком с PyQt, чтобы выбрать соответствующие элементы для задачи. Пожалуйста, предложите правильный способ сделать это. В настоящее время это то, что я намереваюсь сделать:Как выбрать область и заполнить ее сеткой в ​​PyQt?

  1. Загрузить изображение.

    Используйте изображение QImage (QPixMap?), Чтобы отобразить изображение.

  2. Выберите прямоугольную область на изображении.

    Используйте QRubberBand, чтобы выбрать регион.

  3. Нарисуйте сетку в регионе.

    Использовать QLines?

  4. Сделать точки сетки (переходы) по выбору.

    Идея не определена.

Любые указатели на фрагменты с использованием необходимых классов будет очень полезно. Благодаря !

ответ

1

Используйте QGraphicsScene и QGraphicsView для отображения вашей сцены.

  1. Используйте scene->addPixmap, чтобы добавить картинку.
  2. Используйте QRubberBand, чтобы выбрать регион, как вы сказали.
  3. Используйте view->mapToScene, чтобы преобразовать координаты просмотра, полученные с QRubberBand, в координаты сцены.
  4. Добавить строки, используя scene->addLine
  5. Добавить небольшие предметы для кругов в точки пересечения линий, используя scene->addEllipse. Эта функция возвращает объект QGraphicsEllipseItem*. Вы должны использовать круги с центром (0, 0). Используйте item->setPos для перемещения каждого круга в нужном месте.
  6. Используйте item->setFlag(QGraphicsItem::ItemIsSelectable), чтобы выбрать круг. Теперь вы можете выбирать элементы с помощью щелчков мышью.
  7. Используйте view->dragMode(QGraphicsView::RubberBandDrag), если вы хотите включить выбор элементов, используя автоматический QRubberBand.
  8. Используйте QGraphicsScene::selectedItems для получения выбранных товаров. Затем вы можете использовать item->pos() для получения позиций позиций.
+0

Большое спасибо. Пятый пункт, вероятно, спас мне часы бессмысленного размышления. – 0x777

Смежные вопросы