无需拉伸(stretch)笔即可拉伸(stretch)的 WPF 绘图

标签 wpf geometry stretch

我需要在边框控件(或类似控件)中绘制一些简单的线条,这些线条始终延伸到边框的边界。有没有办法只拉伸(stretch)线条而不是它的笔?不涉及大量 C#?

在这个版本中,线条延伸:

<Border>
   <Border.Background>
      <DrawingBrush>
         <DrawingBrush.Drawing>
            <DrawingGroup>
               <GeometryDrawing Brush="Red">
                  <GeometryDrawing.Geometry>
                     <GeometryGroup>
                        <RectangleGeometry Rect="0,0 100,1000" />
                        <LineGeometry  StartPoint="0,0" EndPoint="100,1000"/>
                        <LineGeometry  StartPoint="100,0" EndPoint="0,1000"/>
                     </GeometryGroup>
                  </GeometryDrawing.Geometry>
                  <GeometryDrawing.Pen>
                     <Pen Thickness="20" Brush="Black"/>
                  </GeometryDrawing.Pen>
               </GeometryDrawing>
            </DrawingGroup>
         </DrawingBrush.Drawing>
      </DrawingBrush>
   </Border.Background>
</Border>

我想出的最佳解决方案是:
<Border>
   <Grid>
      <Path Stretch="Fill" Fill="Red" Stroke="Black" StrokeThickness="4"  Data="M0,0 L100,0 100,1000 0,1000 z" />
      <Path Stretch="Fill" Stroke="Black" StrokeThickness="4"  Data="M 0,0 L0,0 100,1000" />
      <Path Stretch="Fill" Stroke="Black" StrokeThickness="4"  Data="M 100,0 L100,0 0,1000" />
   </Grid>
</Border>

但是没有更好的解决方案吗?这不涉及额外的网格?

最佳答案

我通过缩放路径的数据而不是可视组件来做到这一点。

  • 在 Canvas 中放置路径。
  • 将 path.Data 设置为 Geometry,将您的数据表示为逻辑范围的百分比。
  • 将 path.Data.Transform 设置为 ScaleTransform,ScaleX 和 ScaleY 绑定(bind)到实际宽度和高度。
  • 关于无需拉伸(stretch)笔即可拉伸(stretch)的 WPF 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1337549/

    相关文章:

    python - 在 Pygame 中拉伸(stretch)图像,同时保留角点

    wpf - 在WPF textBox中,回车不添加新行

    c# - 如何在没有 ViewBox 参数的情况下编写可缩放的 SVG?

    Ruby -If-Else 语句(三角测试)

    css - 根据内容 css 拉伸(stretch)图像

    CSS Flexbox - 包装元素的不同高度

    wpf - 处理静态资源 ViewModel

    c# - 来自 ViewModel 的焦点控制

    java - 如何停止 "painting"?

    postgresql - 如何使用 Postgis 查找我所在城市的所有街道交叉口