WPF 中Path路徑的使用示例

2021-06-12 12:43:48 字數 3821 閱讀 3642

basic path

大寫的 m 指示 startpoint 是絕對值;小寫的 m 指示 startpoint 是相對於上乙個點的偏移量,如果是 (0,0),則表示不存在偏移。 當您在移動命令之後列出多個點時,即使您指定的是線條命令,也將繪製出連線這些點的線。 如 m 10,50 200,400

建立方法:

#region create method 1

path path = new path();

pathgeometry pathgeometry = new pathgeometry();

pathfigure pathfigure = new pathfigure();

pathfigure.startpoint = new point(400, 300);

pathsegmentcollection segmentcollection = new pathsegmentcollection();

segmentcollection.add(new linesegment() );

pathfigure.segments = segmentcollection;

pathgeometry.figures = new pathfigurecollection() ;

path.data = pathgeometry;

path.stroke = new solidcolorbrush(colors.blueviolet);

path.strokethickness = 3;

main.children.add(path);

#endregion

#region create method2

path pp = new path();

pp.stroke = new solidcolorbrush(colors.blue);

pp.strokethickness = 3;

streamgeometry geometry = new streamgeometry();

geometry.fillrule = fillrule.nonzero; //聲前f0還是f1,現在是f1

using (streamgeometrycontext ctx = geometry.open())

geometry.freeze();

pp.data = geometry;

main.children.add(pp);

#endregion

#region create method3

path pp3 = new path();

pp3.stroke = new solidcolorbrush(colors.red);

pp3.strokethickness = 3;

geometryconverter gc = new geometryconverter();

pp3.data = (geometry)gc.convertfromstring("m 20,30 500,100");

main.children.add(pp3);

#endregion

bezier 三次方貝塞爾曲線

三次方貝塞爾曲線命令

通過使用兩個指定的控制點(controlpoint1 和 controlpoint2)在當前點與指定的終點之間建立一條三次方貝塞爾曲線。

m 40,300  c 560,40 300,430 750,400

p0、p1、p2、p3四個點在平面或在三維空間中定義了三次方貝塞爾曲線。曲線起始於p0走向p1,並從p2的方向來到p3。一般不會經過p1或p2;

這兩個點只是在那裡提供方向資訊。p0和p1之間的間距,決定了曲線在轉而趨進p3之前,走向p2方向的 長度有多長 。

以下的折線為正常的線,曲線為貝塞爾曲線

bezier 平滑的三次方貝塞爾曲線

在當前點與指定的終點之間建立一條三次方貝塞爾曲線。 第乙個控制點假定為前乙個命令的第二個控制點相對於當前點的反射。 如果前乙個命令不存在,或者前乙個命令不是三次方貝塞爾曲線命令或平滑的三次方貝塞爾曲線命令,則假定第乙個控制點就是當前點。 第二個控制點,即曲線終端的控制點,由 controlpoint2 指定。 例如,

以下的折線為正常的線,曲線為貝塞爾曲線

水平線或者垂直線

二次方貝塞爾曲線

二次貝塞爾曲線命令 

通過使用指定的控制點 (controlpoint) 在當前點與指定的終點之間建立一條二次貝塞爾曲線。 q 100,200 300,200 是有效的二次貝塞爾曲線命令示例。

平滑的二次方貝塞爾曲線

平滑二次貝塞爾曲線命令

在當前點與指定的終點之間建立一條二次貝塞爾曲線。 控制點假定為前乙個命令的控制點相對於當前點的反射。 如果前乙個命令不存在,或者前乙個命令不是二次貝塞爾曲線命令或平滑的二次貝塞爾曲線命令,則此控制點就是當前點。

橢圓弧線

橢圓弧線命令在當前點與指定的終點之間建立一條橢圓弧線。

一條或多條三次方貝塞爾曲線

polybeziersegment

使用 pathfigure 物件儲存 polybeziersegment 物件和其他線段。

一條三次方貝塞爾曲線由四個點來定義:乙個起點、乙個終點和兩個控制點。polybeziersegment 通過將 points 屬性設定為點集合來指定一條或多條三次方貝塞爾曲線。對於集合中的每三個點,第乙個點和第二個點指定曲線的兩個控制點,第三個點指定終點。請注意,未指定曲線的起點,因為曲線的起點與最後一條線段的終點是同乙個點。如果您要指定所有三個點(一條貝塞爾曲線),可以使用 beziersegment,將這三個點的值指定為 point1、point2 和 point3。

三次方貝塞爾曲線的兩個控制點的作用像磁鐵一樣,朝著自身的方向吸引本應為直線的部分,從而形成一條曲線。第乙個控制點影響曲線的開始部分;第二個控制點影響曲線的結束部分。注意,曲線不一定必須通過兩個控制點之一;每個控制點將直線的一部分朝著自己的方向移動,但不通過自身。

polybeziersegment 實質上可以有無限個控制點,這些點和終點的值作為 points 屬性值提供

表示一系列二次貝塞爾線段。

polyquadraticbeziersegment

表示一系列二次貝塞爾線段。

乙個 quadraticbeziersegment 物件可以有乙個控制點和乙個終點。乙個 polyquadraticbeziersegment 物件實質上可以有無限個控制點,這些點和終點的值作為 points 屬性值提供。各個點是從 points 字串分析得來的。

在 WPF 中使用 Path 路徑

在 wpf 中總會修改 button 的 style,比如乙個自定義的 close 按鈕。剛入門的可能會用一張 png 格式的來做這個按鈕的 icon,但這個是不優雅的。而且你要改的時候還得去操作檔案,想想都痛苦。但是很多人苦於不知道去 獲取 path,當然網上已經有不少使用 photoshop 獲...

WPF 中 Path 使用虛線

效果如下 上圖由兩個圓弧組成,如下 path data m 50,200 a 100,100 200 1 0 200,100 stroke red strokethickness 5 fill transparent path data m 50,200 a 100,100 200 0 1 200,...

原 Wpf應用Path路徑繪製圓弧

原文 原 wpf應用path路徑繪製圓弧 1.移動指令 move command m m 起始點 或者 m 起始點 比如 m 100,240或m 100,240 使用大寫m時,表示絕對值 使用小寫m時 表示相對於前一點的值,如果前一點沒有指定,則使用 0,0 2.繪製指令 draw command ...