2013-02-28 21 views
0

我有一個類似塗料的應用程序,當我移動鼠標時,它將通過折線繪製一條線。現在我想用圖案圖像替換折線輪廓,因此當我在畫布中移動鼠標時,它會將該圖像重複爲折線的輪廓。我已經寫此代碼:使用圖像作爲折線筆畫大綱

<Canvas x:Name="canvas" Background="#00FFFFFF" MouseMove="Canvas_MouseMove"> 
    <Polyline x:Name="polyline" StrokeThickness="20"> 
     <Polyline.Stroke> 
      <VisualBrush > 
       <VisualBrush.Visual> 
        <Image Source="1.png"></Image> 
       </VisualBrush.Visual> 
      </VisualBrush> 
     </Polyline.Stroke> 
    </Polyline> 
</Canvas> 

唯一的問題是,它使用的圖像作爲整個畫布一種無形的背景,當我移動鼠標的背景的一部分成爲可見!看看這個圖片明白我的意思:

http://goo.gl/2wPKN

這裏也是我的圖像模式,如果你想看看:

http://goo.gl/staHt

那麼,你有什麼想法,應該如何我使用這個圖像作爲我的折線輪廓?

+0

你能提供一張應該如何看起來像的圖像嗎? 「大綱」在你的案例中究竟意味着什麼? – Clemens 2013-02-28 17:07:31

+0

我想用一個小的重複圖像替換折線筆劃中定義的簡單線條。結果會像我當前的輸出(http://goo.gl/2wPKN),但圖像將在多段線的路徑中重複,而不是作爲畫布的背景。我希望我明確自己,但如果我仍然沒有任何意義,我感到遺憾! – Max 2013-02-28 17:36:20

+0

您是否按照以下答案中所示嘗試了平鋪筆刷?您可以將[ViewportUnits](http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.viewportunits.aspx)設置爲'Absolute'並設置適當的視口大小。 – Clemens 2013-02-28 17:43:05

回答

0

你可以使用一個ImageBrushTileMode設置爲TileViewport指定期望的圖像平鋪尺寸。

<Polyline x:Name="polyline" StrokeThickness="20"> 
    <Polyline.Stroke> 
     <ImageBrush ImageSource="1.png" TileMode="Tile" 
        ViewportUnits="Absolute" Viewport="0,0,20,20"/> 
    </Polyline.Stroke> 
</Polyline> 
+0

丹剋剋萊門斯,這正是我想要的,謝謝你的時間。 – Max 2013-02-28 18:35:58

0

我還沒有用PolyLine試過,但是有一個路徑可以設置它的筆畫。

<Path StrokeThickness="10" Data="M 10,10 100,10" Stretch="Fill" Margin="81,36,251,100"> 
    <Path.Stroke> 
     <ImageBrush ImageSource="1.png" Viewport="0,0,1,1" TileMode="Tile"/> 
    </Path.Stroke> 
</Path> 
+0

感謝您的輸入,此代碼''給出與以前相同的結果並添加了'ViewportUnits =「絕對的「它只給出一個沒有任何圖像的恆定的粉紅色筆刷。 – Max 2013-02-28 18:09:17