Qt的绘图系统是极其强大的。下面来展示一下绘制自定义图形的大致绘图方式。
代码语言:javascript复制void MainWindow::paintEvent(QPaintEvent *event)
{
// paint = new QPainter(this);
// paint->setPen(QColor(0,0,255));
// paint->drawLine(30,30,300,300);
// paint->drawRect(100,100,100,100);
// paint->setPen((QColor(255,0,0)));
// paint->drawEllipse(QPoint(300,300),50,50);
QPainter my_paint(this);
my_paint.setPen(QColor(0,0,255)); //画笔是用来画轮廓的
my_paint.setBrush(Qt::blue); //画刷是用来填充轮廓的
my_paint.setRenderHint(QPainter::Antialiasing); //反走样
my_paint.drawEllipse(QPoint(200,200),100,100);
my_paint.translate(205,0); //这相当于把画笔移动到(405,200)这里做画。
my_paint.setPen(QColor(0,255,0)); //画笔是用来画轮廓的
my_paint.setBrush(Qt::green); //画刷是用来填充轮廓的
my_paint.drawEllipse(QPoint(200,200),100,100);
//QPainter什么都能画,无所不能。这也正是Qt绘图系统的强大之处。
//绘制COS函数图像
my_paint.translate(-400,50);
my_paint.setPen(QColor(0,0,255));
double num_x[1000] = {0.0};
int num_y[1000] = {0};
double encrease = 0.1;
for(int i = 0;i < 1000;i )
{
num_x[i] = encrease;
encrease = 0.1;
}
for (int i = 0;i < 1000; i )
{
num_y[i] = 15*cos(num_x[i]);
}
for (int i = 0;i < 1000; i )
{
my_paint.drawPoint(i,400 num_y[i]);
}
}
绘图效果如下所示:
上面代码展示的是大致的绘图思路。如果想画出来非常好看的图像,那么就需要精细的计算窗口尺寸和画点之间的关系。只有这样细致的比较计算之后才能画出来非常满意的图形。当然这也和采集的点的样本多少有极大的关系。