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

+0

Я хочу заменить простую линию, определяемую штрихом полилинии, маленьким повторным изображением. Результат будет похож на мой текущий вывод (http://goo.gl/2wPKN), но изображение будет повторяться по пути полилинии, а не как фон холста. Надеюсь, я ясно дал понять, но извините, если я все еще не имею никакого смысла! – Max

+0

Вы попробовали плиточную щетку, как показано в ответе ниже? Вы можете установить [ViewportUnits] (http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.viewproits.aspx) на «Абсолют» и установить соответствующий размер окна просмотра. – Clemens

ответ

0

Вы можете использовать ImageBrush с TileMode набором для Tile и Viewport, которая определяет желаемый размер изображения плитки.

<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

Danke Clemens, это именно то, что я хотел, спасибо за ваше время. – Max

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 =" Absolute ", он дает только постоянную розовую кисть без изображения. – Max

Смежные вопросы