Стирание нецелесообразно, потому что очень скоро вы будете стирать другие элементы изображения или, по крайней мере, вам нужно быть очень осторожным в том, в каком порядке вы их рисуете.
Буквально, если вы ищете способ нарисовать пирог, метод drawPie () сделает это, но, глядя на приведенный вами пример изображения, вы ищете сегмент шайбы, похожий на пирог.
Что-то вроде этого:
![введите описание изображения здесь](https://i.stack.imgur.com/JVJn3.png)
Это было создано с помощью такого кода:
QImage image(width,height,QImage::Format_ARGB32);
image.fill(qRgba(0,0,0,0)); // clear and make transparent
QPainter painter; // use a painter to draw to the image
painter.begin(&image);
// center at (0,0) and scale so that range [-1,1] cover whole image
QTransform transform;
transform.translate(texSize/2, texSize/2);
transform.scale(texSize/2, -texSize/2);
painter.setTransform(transform);
// outer and inner washer dimensions
QRectF r1(-1, -1, 2, 2);
QRectF r2(-0.5, -0.5, 1, 1);
//-------------- this is the essence of the matter -------------
// create a path with two arcs to form the outline
QPainterPath path;
path.arcTo(r1,0,90); // from 3 'clock 90 degrees cw
path.arcTo(r2,90,-90); // from 12 'clock 90 degrees ccw
//--------------------------------------------------------------
// and finally fill it
painter.fillPath(path, Qt::green);
// save it to file
image.save(QLatin1String("testimage.png"));
Вышеупомянутое не работает с QGraphicsItem. Однако я считаю, что вы должны сделать этот QGraphicsPathItem и поднять код сверху, чтобы создать путь.
Я не хотел публиковать код, который использует QGraphicsPathItem, потому что у меня нет времени проверить этот код, но я считаю, что приведенный выше фрагмент кода решает существенную трудность, связанную с созданием геометрии в первую очередь.
person
nyholku
schedule
12.02.2017