博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给WPF示例图形加上方便查看大小的格子
阅读量:6985 次
发布时间:2019-06-27

本文共 2280 字,大约阅读时间需要 7 分钟。

原文:

有时,我们为了方便查看WPF图形的样式及比例等,需要一些辅助性的格线,置于图形、图像的背景中。

比如下图,就是为了更清晰地查看折线的图形,我们画了用于标示位置大小的背景格:

WPF图形图像格线示图
那么,怎么绘制这样的格子呢?

为了更通用些,我把它做成资源的形式,放到app.xaml文件中的 <Application.Resources>节内:

<Application
    xmlns=""
    xmlns:x=""
    x:Class="Microsoft.Samples.Graphics.app"
    Startup="myAppStartingUp">
    <Application.Resources>
     
      <DrawingBrush x:Key="MyGridBrushResource" Viewport="0,0,10,10" ViewportUnits="Absolute" TileMode="Tile">
        <DrawingBrush.Drawing>
          <DrawingGroup>
            <DrawingGroup.Children>
              <GeometryDrawing Brush="White"><!-- 这里是格子填充颜色 -->
                <GeometryDrawing.Geometry>
                  <RectangleGeometry Rect="0,0,1,1" />
                </GeometryDrawing.Geometry>
              </GeometryDrawing>
              <GeometryDrawing Geometry="M0,0 L1,0 1,0.1, 0,0.1Z" Brush="#CCCCFF" /><!-- 这里是横线 -->
              <GeometryDrawing Geometry="M0,0 L0,1 0.1,1, 0.1,0Z" Brush="#CCCCFF" /><!-- 这里是竖线 -->
            </DrawingGroup.Children>
          </DrawingGroup>
        </DrawingBrush.Drawing>
      </DrawingBrush>  
      <!-- 这里是外框线 -->
      <Style x:Key="MyGridBorderStyle">
        <Setter Property="Border.Background" Value="{StaticResource MyGridBrushResource}"/>
        <Setter Property="Border.HorizontalAlignment" Value="Center"/>
        <Setter Property="Border.VerticalAlignment" Value="Top"/>
        <Setter Property="Border.BorderBrush" Value="Black"/>
        <Setter Property="Border.BorderThickness" Value="1"/>
      </Style>
    </Application.Resources>
</Application>
其中,Viewport="0,0,10,10"中的10,10表示格子的像素宽度、高度值。

使用方法:

// PolylineExample.xaml
<!-- This example shows how to draw Polyline elements. -->
<Page     xmlns=""
    xmlns:x=""
    x:Class="BrawDraw.Com.WPF.Graphics.PolylineExample"
    WindowTitle="Polyline Example">
<StackPanel>
  <StackPanel Margin="10">
    <Border Style="{StaticResource MyGridBorderStyle}">
      <Canvas Height="400" Width="400">
        <Polyline
          Points="10,110 60,10 110,110"
          Stroke="Black"
          StrokeThickness="4" />

        <Polyline

          Points="10,110 110,110 110,10"
          Stroke="Black"
          StrokeThickness="4"
          Canvas.Left="150" />
        </Canvas>
      </Border>
    </StackPanel>
  </StackPanel>
</Page>
C#代码:
// PolylineExample.xaml.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Media;
using System.Windows.Media.Animation;

namespace BrawDraw.Com.WPF.Graphics

{
    public partial class PolylineExample : Page
    {
        public PolylineExample()
        {
            InitializeComponent();
        }
    }
}

你可能感兴趣的文章
Debian GNU/Linux 9 将切换至 GCC6 编译器
查看>>
《VMware 网络技术:原理与实践》—— 3.2 以太网
查看>>
《程序员的修炼——从优秀到卓越》一一1.6 勿以专家自居
查看>>
《Adobe Illustrator CS5中文版经典教程》—第0课0.5节使用绘图模式
查看>>
AngularJS 的自定义指令
查看>>
《CCNA ICND2(200-101)认证考试指南(第4版)》——第1章定义生成树协议
查看>>
什么样的 RPC 才是好用的 RPC
查看>>
《Adobe Premiere Pro CC经典教程》——14.6 特殊颜色效果
查看>>
Debian 项目不再提供 CD 格式的 ISO 镜像
查看>>
《设计团队协作权威指南》—第1章1.3节甘为螺丝钉
查看>>
Mozilla 将 Firefox 的命运与 Rust 语言捆绑在一起
查看>>
android 屏幕保持唤醒 不锁屏 android.permission.WAKE_LOCK
查看>>
《Unity 3D 游戏开发技术详解与典型案例》——1.3节第一个Unity 3D程序
查看>>
Airbnb数据科学团队进化论:如何由内而外实现数据驱动
查看>>
如何用机器学习预测超售,避免美联航“暴力赶客”悲剧
查看>>
css细节(实习第1天)
查看>>
腾讯Android自动化测试实战3.1.4 Robotium的控件获取、操作及断言
查看>>
《Arduino计算机视觉编程》一3.3 总结
查看>>
Bash 中的特殊字符大全
查看>>
《C语言点滴》一1.5 内功修炼
查看>>