2013-02-28 42 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