问题
So I have a Q::Painter
which draws some circle. On windows it paints the circle perfect but on iOS it comes pixelated:
![](https://www.eimg.top/images/2020/03/19/487f4a84c4f35d984bb178adb6c75bd6.png)
and this is non pixelated image:
![](https://www.eimg.top/images/2020/03/19/99262e7a9657eeff2b4c3fee5160d117.png)
I will be very greatfull if someone could help me with this problem. The code is exact the same but iOS renders it bad ...
Here is my code:
void CQtPercentCircleWidget::paintEvent(QPaintEvent *pe)
{
int circleX = parentWidget()->width()/2 - m_iCircleWidth/2;
int circleY = m_iPenWidth;
QRectF normalCircle(circleX, circleY, m_iCircleWidth, m_iCircleHeight);
QPainter painter(this);
painter.setRenderHints((QPainter::Antialiasing,QPainter::HighQualityAntialiasing), QPainter::SmoothPixmapTransform);
painter.setPen(m_qpenNormalColor);
painter.drawEllipse(normalCircle);
QRectF activeCircle(circleX, circleY, m_iCircleWidth, m_iCircleHeight);
int startAngle = 90 * 16;
double dProgress = (double)m_iProgressPercent;
int currentAngle = (dProgress / 100) * (360 * 16);
painter.setPen(m_qpenCurrectPenColor);
painter.drawArc(activeCircle, startAngle, currentAngle);
}
回答1:
You are using setRenderHints()
wrong. Change it to:
painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing | QPainter::SmoothPixmapTransform);
来源:https://stackoverflow.com/questions/29466993/qpaintevent-ios-pixelating-arc