Используйте изображение как контур обводки полилинии
У меня есть приложение, похожее на краску, когда я перемещаю мышь, оно рисует линию полилинией. Теперь я хочу заменить контур полилинии изображением шаблона, поэтому, когда я перемещаю мышь на холсте, он повторяет это изображение как контур полилинии. Я уже написал этот код:
<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>
Единственная проблема заключается в том, что он использует изображение в качестве невидимого фона для всего холста, и когда я перемещаю мышь, эта часть фона становится видимой! Посмотрите на эту картинку, чтобы понять, что я имею в виду:
Вот также мой шаблон изображения, если вы хотите посмотреть:
Итак, у вас есть идея, как мне использовать это изображение в качестве контура моей полилинии?
2 ответа
Вы можете использовать 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>
Я не пробовал это с 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>