部分代码:
void FishControlForm::paintEvent(QPaintEvent *event)
{QPainter p(this);p.setRenderHints(QPainter::Antialiasing|QPainter::SmoothPixmapTransform);p.translate(m_centerPoint);//bgp.setPen(Qt::white);p.drawEllipse(-m_radius,-m_radius,m_radius*2,m_radius*2);if (!m_state){p.save();p.rotate(-m_dropAngle);//扇形区域QRadialGradient Radial(0,0,m_radius,0,0); //设置圆的原点和焦点在中心Radial.setColorAt(0,QColor("#ccffffff"));Radial.setColorAt(1,QColor("#00ffffff"));p.setBrush(Radial);p.setPen(Qt::NoPen);p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,80*16,MinFishScanAngle*16);p.setBrush(Qt::NoBrush);p.restore();p.setPen(Qt::white);p.drawEllipse(getDropRect());}else{if (m_rtShow){p.save();p.rotate(-m_dropAngleRt);p.save();p.rotate(16);if (!m_lfShow){p.setBrush(QBrush(QColor("#70ffffff")));p.drawEllipse(-46,-210,93,12);}else{p.setBrush(QBrush(QColor("#70777777")));p.drawEllipse(-46,-210,93,12);}p.restore();p.restore();p.setPen(Qt::white);p.drawEllipse(getDropRect2());}if (m_lfShow){p.save();p.rotate(-m_dropAngleLf);p.save();p.rotate(-16);if (!m_rtShow){p.setBrush(QBrush(QColor("#70ffffff")));p.drawEllipse(-46,-210,93,12);}else{p.setBrush(QBrush(QColor("#70777777")));p.drawEllipse(-46,-210,93,12);}p.restore();p.restore();p.setPen(Qt::white);p.drawEllipse(getDropRect3());}//扇形区域QRadialGradient Radial(0,0,m_radius,0,0); //设置圆的原点和焦点在中心Radial.setColorAt(0,QColor("#ccffffff"));Radial.setColorAt(1,QColor("#00ffffff"));p.setBrush(Radial);p.setPen(Qt::NoPen);int angle = (-m_dropAngleRt+m_dropAngleLf+MinFishScanAngle)%360;if (angle < 0)angle = 360 + angle;p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,(m_dropAngleRt+80)*16,angle*16);//自动扫描扇形p.drawPie(-m_radius,-m_radius,m_radius*2,m_radius*2,(m_scanAngle+80)*16,20*16);}
}
源码