Qt的繪圖系統是極其強大的。下面來展示一下繪製自定義圖形的大致繪圖方式。
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]);
}
}
繪圖效果如下所示:
上面代碼展示的是大致的繪圖思路。如果想畫出來非常好看的圖像,那麼就需要精細的計算窗口尺寸和畫點之間的關係。只有這樣細緻的比較計算之後才能畫出來非常滿意的圖形。當然這也和採集的點的樣本多少有極大的關係。