.cpp 文件
#include "MyWidget.h"
#include <QtGui>
MyWidget::MyWidget(QWidget *parent /* = 0 */):QWidget(parent)
{
m_Prec = 4;
m_CurrentlineLength = 10;
m_beginPointF = QPointF(-10,-10);
m_endPointF = QPointF(-10,-10+m_CurrentlineLength);
}
void MyWidget::paintEvent(QPaintEvent* event)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
int side = qMin(width(), height());
painter.setViewport((width() - side) / 2, (height() - side) / 2,
side, side);
painter.setWindow(-100, -100, 200, 200);
Draw(&painter);
}
void MyWidget::Draw(QPainter * painter)
{
m_Prec = 4;
m_CurrentlineLength = 10;
m_beginPointF = QPointF(-10,-10);
m_endPointF = QPointF(-10,-10+m_CurrentlineLength);
painter->save();
QPen thinPen(palette().foreground(),0.2);
painter->setPen(thinPen);
painter->setBrush(palette().foreground());
for(int i = 0;i < 18;i++)
{
painter->translate(m_beginPointF);
painter->rotate(120);
painter->translate(-m_beginPointF.rx(),-m_beginPointF.ry());
m_endPointF = QPointF(m_beginPointF.rx(),m_beginPointF.ry()-m_CurrentlineLength);
painter->drawLine(m_beginPointF,m_endPointF);
m_CurrentlineLength += m_Prec;//m_CurrentlineLength *= m_Prec;
m_beginPointF = m_endPointF;
}
painter->restore();
}
第一个图形的实现方法 其余的角度改成 360/ 边数 就ok