질문은 간단합니다! 나는 QPainter
클래스를 사용하여 이와 같은 것을 원한다. 회전하지 않고 QPainter 클래스를 사용하여 원 주위에 값을 쓰는 방법은 무엇입니까?
값을 회전하지 않겠습니다. 하지만 QPainter::rotate
메서드를 사용하여이 값 (회전 된 형식)을 얻고 있습니다.
누군가 나를 QPainter
질문은 간단합니다! 나는 QPainter
클래스를 사용하여 이와 같은 것을 원한다. 회전하지 않고 QPainter 클래스를 사용하여 원 주위에 값을 쓰는 방법은 무엇입니까?
값을 회전하지 않겠습니다. 하지만 QPainter::rotate
메서드를 사용하여이 값 (회전 된 형식)을 얻고 있습니다.
누군가 나를 QPainter
나는 그것을 할 것입니다 방법에 대한 간단한 코드는 사용하여 첫 번째 이미지와 같은 값으로 원을 그리는 데 도움이 될 수 있습니다. 가정 나는 위젯의 페인트 이벤트에 그림입니다 :
#define PI 3.14159265
[..]
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPoint center = rect().center();
painter.drawEllipse(center, 2, 2);
const int radius = 100;
// Draw semicircle with texts on every 30".
for (double i = .0; i <= 180.0; i += 30.0) {
QPoint p(center.x() + radius * cos(i * PI/180.0),
center.y() - radius * sin(i * PI/180.0));
painter.drawText(p, QString::number(i));
}
}
어떤 경로를 따라 공식없이 텍스트를 그립니다
사용하여 경로 있습니다
클래스 QPainterPath
만들기 여러 경로를 사용하여 경로를 그릴 수 있습니다.
귀하의 경우에는 arcTo
을 사용할 수 있습니다. 경로 시작 지점이 있습니다
QPainterPath path;
path.arcTo(rect, 210, -240.0);
가 조금 어려움이 있습니다 출발점
arcTo
으로 전화하면 호의 시작 부분에 선이 생겨 호가 그려집니다. 따라서
moveTo
을 호출하고 호의 시작점을 인수로 전달해야합니다. 하지만 어디서 구할 수 있니? 호 공식을 사용하여 계산 하시겠습니까? 아니요. 근원을 실험하고 대략적인 점을 설정하거나 책을 열고 곡선의 수식을 찾을 수는 있지만 출발점을 쉽게 알 수있는 방법이 있습니다. 크기가 0 인 곡선을 그려 마지막 점을 얻으십시오. :
QPainterPath initialPath;
initialPath.arcTo(rect, 210, 0);
path.moveTo(initialPath.currentPosition());
텍스트
을 그립니다 당신은 당신이 pointAtPercent
를 사용하여 경로의 요점을 파악하고 거기에 텍스트를 페인트 drawText
를 사용하여이 경로를해야합니다. 여기
은 아래 코드는 아크와 숫자를 그릴 수 있습니다 :
QPainter p(this);
p.drawArc(rect(), 210 * 16, -240 * 16);
QRectF rect(20, 20, width() - 40, height() - 40);
QPainterPath initialPath;
initialPath.arcTo(rect, 210, 0);
QPainterPath path;
path.moveTo(initialPath.currentPosition());
path.arcTo(rect, 210, -240.0);
for (int i = 0; i <= 10; i += 1)
{
p.drawText(path.pointAtPercent((qreal)i/10), QString::number(i));
}
을이 원 또는 타원인가? – vahancho