【渲染引擎】agg畫線介紹
阿新 • • 發佈:2019-02-02
對於agg的字型進行了一個很簡單的介紹,下面就再對agg的畫線進行一個簡單的說明。
首先對於畫線來說,有幾種線條比如普通線, 虛實線,點陣狀的線條。agg對於每種線條都有支援。另外對於線條的起始的結束樣式也有幾種,這個屬性一般都是以linecap來標識。只有繪製較寬線段時,它才有效。這個屬性的合法值如下表所示。預設值是:”butt”。
- “butt” 這個預設值指定了線段應該沒有線帽。線條的末點是平直的而且和線條的方向正交,這條線段在其端點之外沒有擴充套件;
- “round” 這個值指定了線段應該帶有一個半圓形的線帽,半圓的直徑等於線段的寬度,並且線段在端點之外擴充套件了線段寬度的一半;
- “square” 這個值表示線段應該帶有一個矩形線帽。這個值和 “butt” 一樣,但是線段擴充套件了自己的寬度的一半。
在agg中相應的也有三個屬性與其對應。
下面我們對agg中畫虛實線的方法進行介紹。對於agg來說,其虛實線主要實現是在agg_conv_dash.h標頭檔案中,可以看到其主要提供了幾個方法
template<class VertexSource, class Markers=null_markers>
struct conv_dash : public conv_adaptor_vcgen<VertexSource, vcgen_dash, Markers>
{
typedef Markers marker_type;
typedef conv_adaptor_vcgen<VertexSource, vcgen_dash, Markers> base_type;
conv_dash(VertexSource& vs) :
conv_adaptor_vcgen<VertexSource, vcgen_dash, Markers>(vs)
{
}
void remove_all_dashes()
{
base_type::generator().remove_all_dashes();
}
void add_dash(double dash_len, double gap_len)
{
base_type::generator().add_dash(dash_len, gap_len);
}
void dash_start(double ds)
{
base_type::generator().dash_start(ds);
}
void shorten(double s) { base_type::generator().shorten(s); }
double shorten() const { return base_type::generator().shorten(); }
在我們的開發中主要就是使用add_dash方法,這個方法接受倆個引數,通過引數名字可以很容易看出其意義。