|
|||||||
Как поставить точку по клику мышкой на области QPixmap
Время создания: 20.03.2016 22:41
Текстовые метки: QPixmap, QPainter, точка, мышка
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Графика
Запись: xintrea/mytetra_syncro/master/base/0000000784/text.html на raw.github.com
|
|||||||
|
|||||||
Ну если координаты целочисленные, то я бы внутри виджета сист.координат имел матрицу или список отмеченных координат. А как ставить точку: где-то на форуме было - найти не могу. Но вот код: #include <QApplication> #include <QPainter> #include <QImage> #include <QMouseEvent> #include <QPaintEvent> #include <QWidget> class Pa : public QWidget { public: Pa() { pixmap_ = QPixmap( 4096, 4096 ); pixmap_.fill( 0xffffffff ); pen_ = QPen( QBrush( Qt::black ), 5.0f ); } protected: void mousePressEvent( QMouseEvent * e ) { if ( e->button() == Qt::LeftButton ) { QPainter p( &pixmap_ ); p.setPen( pen_ ); p.drawPoint( e->pos() ); p.end(); lastPoint_ = e->pos(); update(); } } void mouseMoveEvent( QMouseEvent * e ) { if ( e->buttons() & Qt::LeftButton ) { QPainter p( &pixmap_ ); p.setPen( pen_ ); p.drawLine( lastPoint_, e->pos() ); p.end(); lastPoint_ = e->pos(); update(); } } void paintEvent( QPaintEvent * ) { QPainter p( this ); p.setCompositionMode( QPainter::CompositionMode_Source ); p.drawPixmap( QPoint(), pixmap_ ); } private: QPen pen_; QPixmap pixmap_; QPoint lastPoint_; }; int main( int argc, char ** argv ) { QApplication app( argc, argv ); Pa pa; pa.show(); return app.exec(); } Спасибо человеку выложившему этот код, т.к с помощью него я многое понял=) А с другой стороны код очень простой. Потом просто преобразуешь систему координат. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|