Прямоугольник WPF заполняется горизонтальными или вертикальными строками

Я пытаюсь создать один прямоугольник, заполненный Горизонтальными или Вертикальными строками. Ширина прямоугольника является динамичной, таким образом, я не могу использовать кисть изображения. Сообщите мне, знает ли кто-либо какое-либо решение.

5
задан Dave Clemmer 5 August 2011 в 16:58
поделиться

4 ответа

Я придумал простой способ сделать это; наконец, я использовал следующие ресурсы визуальной кисти, чтобы заполнить прямоугольник горизонтальными, вертикальными или пунктирными вертикальными линиями соответственно

   <!--for horizontal lines-->    
   <VisualBrush 
              x:Key="HorizontalLines" 
              TileMode="Tile" Viewport="0,0,4,4" 
              ViewportUnits="Absolute" Viewbox="0,0,10,10"    
              ViewboxUnits="Absolute">
            <VisualBrush.Visual>
                <Canvas>
                    <Path Stroke="Black" Data="M 0 10 l 10 0" />
                </Canvas>
            </VisualBrush.Visual>
        </VisualBrush>

        <!--For vertical lines-->
        <VisualBrush 
              x:Key="VerticalLines" 
              TileMode="Tile" Viewport="0,0,4,4" 
              ViewportUnits="Absolute" Viewbox="0,0,10,10"    
              ViewboxUnits="Absolute">
            <VisualBrush.Visual>
                <Canvas >            
                    <Path Stroke="Black" Data="M 0 0 l 0 10" />                        
                </Canvas>
            </VisualBrush.Visual>
        </VisualBrush>


         <!--For dotted vertical lines-->
        <VisualBrush 
                x:Key="DottedVerticalLinesWithFill" 
                TileMode="Tile" Viewport="0,0,10,10" 
                ViewportUnits="Absolute" Viewbox="0,0,10,10"    
                ViewboxUnits="Absolute">
            <VisualBrush.Visual>
                <Canvas>
                    <Path Stroke="Purple" Data="M 0 5l 0 -10" />
                </Canvas>
            </VisualBrush.Visual>
        </VisualBrush>
11
ответ дан 18 December 2019 в 09:48
поделиться

Вы пробовали использовать TileBrush?

0
ответ дан 18 December 2019 в 09:48
поделиться

Вы можете легко сделать это с помощью LinearGradientBrush:

  <Rectangle Width="100" Height="100">
     <Rectangle.Fill>
        <LinearGradientBrush SpreadMethod="Reflect" StartPoint="0 0" EndPoint="0 0.05">
           <GradientStop Offset="0.5" Color="Black"/>
           <GradientStop Offset="0.5" Color="White"/>
        </LinearGradientBrush>
     </Rectangle.Fill>
  </Rectangle>

Вы управляете толщиной линии и ориентацией с помощью свойства EndPoint.

6
ответ дан 18 December 2019 в 09:48
поделиться

ImageBrush происходит от TileBrush , поэтому вы можно использовать свойство Viewport , чтобы повторить изображение. См. Пример на этой странице MSDN .

0
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: