StreamGeometry指令詳解

2021-06-16 04:20:46 字數 3340 閱讀 2295

wpf

提供兩個類來描述路徑資料:乙個是streamgeometry,另乙個是pathfigurecollection。

stroke="black" data="m 100,240 c 510,300 80,100 300,160 h40 v80" />的形式是streamgeometry的xaml**表示形式,也是最簡潔的表示形式。

stroke="black" strokethickness="1" fill="#ccccff">

.data>

path

.data>

path

>

這樣的方式是使用pathfigurecollection的xaml**表示方式。

這兩種方式都可以達至同一種顯示效果,那麼,什麼時候使用streamgeometry,什麼時候使用pathfigurecollection方式呢?

一般地,當你建立路徑後,不再需要修改時,可使用streamgeometry方式,如果還需要對路徑數值進行修改,則使用pathfigurecollection方式(這裡就是pathgeometry)。

下面來解釋一下「m 100,240 c510,300 80,100 300,160 h40 v80」這樣字串的意義。

分為四種情況來解釋:

1. 移動指令:move command(m):m 起始點  或者:m 起始點

比如:m 100,240或m 100,240

使用大寫m時,表示絕對值; 使用小寫m時; 表示相對於前一點的值,如果前一點沒有指定,則使用(0,0)。

2. 繪製指令(draw command):

我們可以繪製以下形狀:

(1) 直線:line(l)

(2) 水平直線: horizontal line(h)

(3) 垂直直線: vertical line(v)

(4) 三次方程式貝塞爾曲線: cubic bezier curve(c)

(5) 二次方程式貝塞爾曲線: quadratic bezier curve(q)

(6) 平滑三次方程式貝塞爾曲線: smooth cubic bezier curve(s)

(7) 平滑二次方程式貝塞爾曲線: smooth quadratic bezier curve(t)

(8) 橢圓圓弧: elliptical arc(a)

上面每種形狀後用括號括起的英文本母為命令簡寫的大寫形式,但你也可以使用小寫。使用大寫與小寫的區別是:大寫是絕對值,小寫是相對值。

比如:l 100, 200 l 300,400表示從絕對座標點(100,200)到另一絕對座標點(300,400)的一條直線。而l 100, 200 l 300,400則表示相對上一點(如果未指定,則預設為(0,0)座標點)開始計算的座標點(100,200)到座標點為(300,400)的一條直線。

當我們重複使用同一種型別時,就可以省略前面的命令。比如:l 100, 200 l 300,400簡寫為:l 100, 200 300,400。

stroke="black" strokethickness="1" data="m 10,10 100,10 100,40 z m 10,100 l 100,100 100,50 z" />

這裡有乙個你暫時還沒見過的z指令,它就是乙個關閉指令(close command),表示封閉指定形狀,即將首尾點連線起來形成封閉的區域。

繪製指令格式語法:

(1) 直線:line(l)

格式:l 結束點座標 或: l 結束點座標。

比如:l 100,100 或 l 100 100。座標值可以使用x,y(中間用英文逗號隔開)或x y(中間用半形空格隔開)的形式。

(2) 水平直線  horizontal line(h):繪製從當前點到指定x座標的直線。

格式:h x值 或 h x值(x為system.double型別的值)

比如:h 100或h 100,也可以是:h 100.00或h 100.00等形式。

(3) 垂直直線 vertical line(v):繪製從當前點到指定y座標的直線。

格式:v y值 或 v y值(y為system.double型別的值)

比如:v 100或y 100,也可以是:v 100.00或v 100.00等形式。

(4) 三次方程式貝塞爾曲線 cubic bezier curve(c):通過指定兩個控制點來繪製由當前點到指定結束點間的三次方程貝塞爾曲線。

格式:c 第一控制點 第二控制點 結束點 或 c 第一控制點 第二控制點 結束點

比如:c 100,200 200,400 300,200 或 c 100,200 200,400 300,200

其中,點(100,200)為第一控制點,點(200,400)為第二控制點,點(300,200)為結束點。

(5) 二次方程式貝塞爾曲線 quadratic bezier curve(q):通過指定的乙個控制點來繪製由當前點到指定結束點間的二次方程貝塞爾曲線。

格式:q 控制點 結束點 或 q 控制點 結束點

比如:q 100,200 300,200。其中,點(100,200)為控制點,點(300,200)為結束點。

(6) 平滑三次方程式貝塞爾曲線: smooth cubic bezier curve(s):通過乙個指定點來「平滑地」控制當前點到指定點的貝塞爾曲線。

格式:s 控制點 結束點 或 s 控制點 結束點

比如:s 100,200 200,300

(7) 平滑二次方程式貝塞爾曲線 smooth quadratic bezier curve(t):與平滑三次方程貝塞爾曲線類似。

格式:t 控制點 結束點 或 t 控制點 結束點

比如:t 100,200 200,300

(8) 橢圓圓弧: elliptical arc(a) : 在當前點與指定結束點間繪製圓弧。

a 尺寸 圓弧旋轉角度值 優勢弧的標記 正負角度標記 結束點

或: a 尺寸 圓弧旋轉角度值 優勢弧的標記 正負角度標記 結束點

尺寸(size): system.windows.size型別,指定橢圓圓弧x,y方向上的半徑值。

旋轉角度(rotationangle):system.double型別。

圓弧旋轉角度值(rotationangle):橢圓弧的旋轉角度值。

優勢弧的標記(islargearcflag):是否為優勢弧,如果弧的角度大於等於180度,則設為1,否則為0。

正負角度標記(sweepdirectionflag):當正角方向繪製時設為1,否則為0。

結束點(endpoint):system.windows.point型別。

3. 關閉指令(close command):用以將圖形的首、尾點用直線連線,以形成乙個封閉的區域。

用z或z表示

是指什麼 cpu是指什麼

cpu是 處理器。是計算機的運算器與控制器。cpu內部結構大概可以分為控制單元 運算單元 儲存單元和時鐘等幾個主要部分 運算器是計算機對資料進行加工處理的中心,它主要由算術邏輯部件 alu arithmeticandlogicunit 暫存器組和狀態暫存器組成 控制器是計算機的控制中心,它決定了計算...

ypedef struct LNode結構指標

typedef struct lnodelnode,linklist lnode和 linklist 是與前面的typedef配合起來使用的,意思是給你宣告的結構體起乙個別名叫lnode,同時起乙個指標別名叫linklist,以後就可以用以下方式宣告變數 lnode a 宣告了乙個struct ln...

Android RESTful API 設計指南

網路應用程式,分為前端和後端兩個部分。當前的發展趨勢,就是前端裝置層出不窮 手機 平板 桌面電腦 其他專用裝置 因此,必須有一種統一的機制,方便不同的前端裝置與後端進行通訊。這導致api構架的流行,甚至出現 api first 的設計思想。restful api是目前比較成熟的一套網際網路應用程式的...