On Friday 26 April 2024 21:52:48 CEST Christian Ehrlicher via Development 
wrote:
> Hello,
> 
> I'm currently trying to investigate a painting problem within the
> windowsvista / common style:
> 
>      QImage img(7, 7, QImage::Format_ARGB32_Premultiplied);
>      QPolygon poly{ QPoint(1, 1), {5, 1}, {3, 5} };
>      QPainter p(&img);
>      p.setPen(Qt::NoPen);
>      p.setBrush(QColor(Qt::black));
>      p.drawPolygon(poly);
>      p.setPen(QColor(0, 255, 0, 128));
>      p.drawPoints(poly.data(), poly.size());
>      p.end();
>      img.save("output.png");
> 
> This code should draw a small down arrow (e.g. for a QPushButton with a
> QMenu attached) and should look similar to this:
> 
>    0123456
> 0
> 1  XXXXX
> 2   XXX
> 3   XXX
> 4    X
> 5    X
> 6
> 
> But the outcome is this:
> 
>    0123456
> 0
> 1  XXXX
> 2   XX
> 3   XX
> 4
> 5
> 6
> 
> Setting a non-cosmetic pen at least result in painting of all three
> corners but gives a non-symmetric triangle:
> 
>    0123456
> 0
> 1  XXXXX
> 2  XXXX
> 3   XXX
> 4   XX
> 5    X
> 6
> 
I think the problem with the cosmetic pen is partly the need to be symmetric. 
Years ago I tried cleaning up the cosmetic pen, but had to revert it because 
it violated rules about symmetry.

https://codereview.qt-project.org/c/qt/qtbase/+/200383

Though perhaps the non-cosmetic painting could have the rounding adjusted so 
it would look better for your example. Otherwise try offsetting the triangle 
by 0.5

Best regards
Allan


-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to