You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.3 KiB

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
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<TabletDataPacket> m_list_buffer;
SignPenPainter* m_SignPenpainter;
float penRadius;
bool isUsedMouse;
bool isUsedInk;
};
#endif // MAINWINDOW_H