Qt實現透明窗體畫線
通過電磁筆在簽字版上實現透明窗體簽字,帶壓感,支持mac、windows、linux,
窗體設置
//設置無邊界窗口並置頂
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
setMouseTracking(true);
//窗口設置透明
setAttribute(Qt::WA_TranslucentBackground,true);
setFixedSize(1280,800);
筆跡畫線
void MainWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QPen pen;
pen.setColor(Qt::red);
for(int i=0; i<_lines.size(); ++i)
{
const QVector<Point_>& line = _lines.at(i);
for(int j=1; j<line.size()-1; ++j)
{
float w = (line.at(j).p / 2048.0) * 5;
pen.setWidthF(w);
painter.setPen(pen);
if (line.at(j).p <= 1 && j+2 < line.size()-1)
{
painter.drawLine(line.at(j+1).x, line.at(j+1).y, line.at(j+2).x, line.at(j+2).y);
}
else
{
painter.drawLine(line.at(j-1).x, line.at(j-1).y, line.at(j).x, line.at(j).y);
}
}
}
}