qt 中可以使用 qpainterpath::cubicto() 函式繪製如下的平滑曲線
函式原型:void qpainterpath::cubicto(const qpointf & c1, const qpointf & c2, const qpointf & endpoint)
使用c1和c2指定的控制點在當前位置和給定端點之間新增三次貝塞爾曲線,新增曲線後,當前位置將更新為曲線的終點
繪製平滑曲線的關鍵是控制點的計算,sp 為線段的起始點,ep 為線段的終點,c1,c2 為貝塞爾曲線的控制點,其座標計算如下
上**:
標頭檔案:
#ifndef widget_h
#define widget_h
#include
namespace ui
class widget : public qwidget
;#endif // widget_h
cpp檔案:
#include "widget.h"
#include "ui_widget.h"
#include
widget::widget(qwidget *parent) :
qwidget(parent),
ui(new ui::widget)
widget::~widget()
void widget::paintevent(qpaintevent *)
qpainter painter(this);
//設定渲染提示為消除鋸齒
painter.setrenderhint(qpainter::antialiasing, true);
//設定畫筆顏色和寬度
painter.setpen(qpen(qt::black, 2));
//將座標系轉換為向量
painter.translate(40, 130);
//繪製path
painter.drawpath(path);
// 繪製曲線上的點
painter.setbrush(qt::gray);
//繪製曲線上的點
for (int i = 0; i < points.size(); ++i)
}
原文: Qt畫平滑曲線
初學qt繪圖,使用drawling 繪製的直線在兩端點間距離較小時總是出現折點 鋸齒 非常不美觀。後來發現使用qpainter setrenderhint qpainter antialiasing 能消除鋸齒。setrenderhint用於設定呈現樣式,antialiasing是反鋸齒。例 qpa...
畫平滑的roc曲線
使用matlab畫roc曲線 本來malab曲線的平滑有2種方法 clc,clear a 1 1 6 橫座標 b 8.0 9.0 10.0 15.0 35.0 40.0 縱座標 plot a,b,b 自然狀態的畫圖效果 hold on 第一種,畫平滑曲線的方法 c polyfit a,b,2 進行擬...
Qt 繪製平滑Bezier曲線
1 二階bezier static qpointf quadvalue const qpointf p0,const qpointf p1,const qpointf p2,qreal t static qpointf quadderived const qpointf p0,const qpoin...