绘制接口
QPainter中有多个绘制椭圆的接口,长轴半径与短轴半径相等的椭圆即正圆。
void drawEllipse(const QPoint ¢er, int rx, int ry);
注意设置QPainter的画刷QBrush为空,否则绘制的将是填充的圆。
void JView::DrawCircle(JNSGeometry::JGeoCircle *circle) {
#ifdef USE_QPAINTER
auto center = GeoPointToQPointF(GeoToView(circle->GetCenter()));
auto radius = circle->GetRadius() / ratio_;
painter_->drawEllipse(center, radius, radius);
#endif
}
注意这里的长度变换,从几何图形坐标系转为视图坐标系的半径长度。
测试
JViewWidget::JViewWidget(QWidget *parent)
: QMdiSubWindow(parent) {
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
setMinimumSize(100, 100);
doc_ = new JNSDocument::JDocument(windowTitle());
view_ = new JNSView::JView(width(), height(), doc_);
/// test data
doc_-&