#ifndef MAINWINDOW_H #define MAINWINDOW_H #include QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE struct TabletContext { int max_x; int max_y; int max_p; int sys_x; int sys_y; int sys_w; int sys_h; }; struct TabletDataPacket { unsigned int x; //Wintab X unsigned int y; //Wintab Y unsigned int p; //压力 }; class QImage; class SignPenPainter; class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: void on_pushButton_clicked(); void NeedToUpdate(QRect rect); protected: #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result); #else virtual bool winEvent(MSG *message, long *result); #endif virtual void paintEvent(QPaintEvent *event) override; virtual void resizeEvent(QResizeEvent *event) override; virtual void mousePressEvent(QMouseEvent *event) override; virtual void mouseMoveEvent(QMouseEvent *event) override; virtual void mouseReleaseEvent(QMouseEvent *event) override; private slots: void on_checkBox_stateChanged(int arg1); private: //初始化后台缓冲区 void ResetBufferImage(); //绘制笔迹 void DrawSign_Base(int x,int y,int p,bool is_ink=false); void DrawSign_Wintab(const TabletDataPacket &pkt); void DrawSign_Ink(int ink_x,int ink_y,int ink_p); void MousePressed(QPointF currentPoint,double force,double maxForce,bool isStressSwitch);//force 压感力度 void MouseMoved(QPointF currentPoint,double force,double maxForce,bool isStressSwitch); void MouseReleased(QPointF currentPoint); private: Ui::MainWindow *ui; // QImage *m_pImage{nullptr}; // QPainter *m_pPainter{nullptr};//后台绘图器 // TabletContext m_tablet_ctx{0}; // unsigned int m_wintab_handle{0}; // bool m_mouse_pressed{false}; QImage *m_pImage; QPainter *m_pPainter;//后台绘图器 TabletContext m_tablet_ctx; unsigned int m_wintab_handle; bool m_mouse_pressed; // QList m_list_buffer; SignPenPainter* m_SignPenpainter; float penRadius; bool isUsedMouse; bool isUsedInk; }; #endif // MAINWINDOW_H