记录一些Qt的绘图技巧和遗忘点
1、使用画刷绘制闭合区间,边缘没有黑点
rcY = QRectF(110.0, 150.0, 140.0, 200.0);
p.setPen(Qt::NoPen); //加上这句就没有边缘的黑点
p.setBrush(Qt::yellow);
p.drawEllipse(rcY);
2、使用缓存绘图
void MouseLabel::drawMap()
{
qreal step = 10.0;
QPixmap pix = QPixmap(“:/Resource/png/mouse_normal.png”);
QPainter p(&pix);
p.setRenderHint(QPainter::Antialiasing);
p.setPen(Qt::NoPen);
QRectF rcY = QRectF(110.0, 150.0, 140.0, 200.0);
p.setBrush(Qt::yellow);
p.drawEllipse(rcY);
QRectF rcR = QRectF(rcY.x()+step, rcY.y()+step, rcY.width()-2step, rcY.height()-2step);
p.setBrush(Qt::red);
p.drawEllipse(rcR);
m_pix = pix.scaled(118, 200, Qt::KeepAspectRatio); //放缩图片
QPainter painter(&m_pix);
painter.setRenderHint(QPainter::Antialiasing);
update();
}
void MouseLabel::paintEvent(QPaintEvent *event)
{
QWidget::paintEvent(event);
QPainter painter(this);
painter.drawPixmap(QPoint(0,0), m_pix);
}