我想創建一個由兩條線組成的簡單交叉線。線應該有不同的顏色。我創建了一個繼承Shape的類。該類包含兩行並計算行的座標。我讀過,我必須實現DefiningGeometry屬性,如果我從形狀繼承。但是,我怎樣才能返回該屬性的get部分中的兩行?創建由多條單線組成的自定義形狀
在此先感謝。
我想創建一個由兩條線組成的簡單交叉線。線應該有不同的顏色。我創建了一個繼承Shape的類。該類包含兩行並計算行的座標。我讀過,我必須實現DefiningGeometry屬性,如果我從形狀繼承。但是,我怎樣才能返回該屬性的get部分中的兩行?創建由多條單線組成的自定義形狀
在此先感謝。
聽起來好像你可以使用CombinedGeometry
Class來組合你的線條......唯一的是你需要使用LineGeometry
類而不是Line
s。你可以做這樣的事情(從鏈接CombinedGeometry
頁面上MSDN):
<Path Stroke="Black" StrokeThickness="1" Fill="#CCCCFF">
<Path.Data>
<!-- Combines two geometries using the XOR combine mode. -->
<CombinedGeometry GeometryCombineMode="Xor">
<CombinedGeometry.Geometry1>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="75,75" />
</CombinedGeometry.Geometry1>
<CombinedGeometry.Geometry2>
<EllipseGeometry RadiusX="50" RadiusY="50" Center="125,75" />
</CombinedGeometry.Geometry2>
</CombinedGeometry>
</Path.Data>
</Path>
當然,你不會想和LineGeometry
對象替換這些EllipseGeometry
對象,但不應該是困難的,因爲它們具有類似的屬性。
UPDATE >>>
不幸的是,我不認爲你可以使用一個CombinedGeometry
對象,其中包含不同顏色的幾何形狀......整個形狀必須與一個Brush
畫。然而,你可能假兩種顏色巧妙地位於GradientStop
s。此外,作爲@Clemens提到,也許GeometryGroup
會更容易讓你使用...嘗試這樣的事:
<Path StrokeThickness="5" Fill="Blue" HorizontalAlignment="Center" VerticalAlignment="Center">
<Path.Data>
<GeometryGroup>
<LineGeometry StartPoint="50,0" EndPoint="50,100" />
<LineGeometry StartPoint="0,50" EndPoint="100,50" />
</GeometryGroup>
</Path.Data>
<Path.Stroke>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="LightGreen" Offset="0" />
<GradientStop Color="LightGreen" Offset="0.475" />
<GradientStop Color="Red" Offset="0.475" />
<GradientStop Color="Red" Offset="0.525" />
<GradientStop Color="LightGreen" Offset="0.525" />
<GradientStop Color="LightGreen" Offset="0" />
</LinearGradientBrush>
</Path.Stroke>
</Path>
,就像它是在兩行實際上是不同的顏色這Brush
會出現:
然後,所有你需要做的是將它轉換成C#從DefiningGeometry
財產歸還。請使用鏈接頁面上的示例以及MSDN上的GeometryGroup
class頁面來幫助您解決這個問題。
而'GeometryGroup'可能比'CombinedGeometry'更簡單(也更易於理解)。 – Clemens
+1你是對的...這很容易。接得好。謝謝,我已經更新了我的答案。 – Sheridan
謝謝你的回答。好的解決方案 – ooorndtski
你可以抓兩個不同顏色的線條由兩個GeometryDrawings的手段,用於填充矩形一個DrawingBrush:
<Rectangle Width="20" Height="20">
<Rectangle.Fill>
<DrawingBrush>
<DrawingBrush.Drawing>
<DrawingGroup>
<GeometryDrawing Geometry="M0,-10 L0,10">
<GeometryDrawing.Pen>
<Pen Brush="Blue" Thickness="3"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
<GeometryDrawing Geometry="M-10,0 L10,0">
<GeometryDrawing.Pen>
<Pen Brush="Red" Thickness="3"/>
</GeometryDrawing.Pen>
</GeometryDrawing>
</DrawingGroup>
</DrawingBrush.Drawing>
</DrawingBrush>
</Rectangle.Fill>
</Rectangle>
你爲什麼不使用路徑在其'Data'財產適當幾何?請參閱[這裏](http://msdn.microsoft.com/en-us/library/system.windows.shapes.path.data.aspx)。 – Clemens
當你說「線應該有不同的顏色」,你的意思是十字架的兩條線? – Clemens
是的。一條線應該是紅色的,另一條線是藍色的 – ooorndtski