WPF绘制图形

本文介绍了如何在WPF环境中利用图形API绘制简单的图形,参照DrawToolsWPF项目,展示了类似Winform的图形绘制方法。

利用WPF绘制简单图形,就像Winform那样,参考DrawToolsWPF。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows;
using System.Windows.Input;

namespace WpfApplication1
{
    public class DrawCanvas : Canvas
    {
        private VisualCollection graphics;
        private DrawingContext context;
        private DrawingVisual visual;
        private Point start;

        public DrawCanvas()
        {
            graphics = new VisualCollection(this);
            visual = new DrawingVisual();
            graphics.Add(visual);
            MouseDown += new System.Windows.Input.MouseButtonEventHandler(DrawCanvas_MouseDown);
            MouseMove += new System.Windows.Input.MouseEventHandler(DrawCanvas_MouseMove);
            MouseUp += new System.Windows.Input.MouseButtonEventHandler(DrawCanvas_MouseUp);            
        }

        void Dr
### WPF绘制图形的基础概念 在 Windows Presentation Foundation (WPF) 中,绘制图形是一项核心功能。借助 WPF 提供的强大绘图 API 和画刷工具,开发人员能够轻松创建各种视觉效果和复杂 UI 元素[^1]。 #### 使用画刷绘制基础图形 WPF 支持多种类型的画刷(Brush),这些画刷可以用于设置控件的颜色属性,例如背景色、前景色以及形状填充颜色。常见的画刷类型包括 `SolidColorBrush`(纯色)、`LinearGradientBrush`(线性渐变)、`RadialGradientBrush`(径向渐变)和 `ImageBrush`(图片纹理)。以下是使用 `SolidColorBrush` 设置矩形背景的一个简单示例: ```xml <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WPF 图形绘制示例" Height="350" Width="525"> <Grid> <!-- 创建一个矩形 --> <Rectangle Width="100" Height="100" Fill="Blue"/> </Grid> </Window> ``` 上述代码展示了如何通过 XAML 定义一个蓝色的矩形。 #### 动态绘制图形 除了静态定义外,还可以通过 C# 代码动态生成图形。下面是一个使用 C# 添加矩形并应用不同画刷的例子: ```csharp using System.Windows; using System.Windows.Media; using System.Windows.Shapes; namespace WpfApp { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 创建一个新的Canvas作为容器 var canvas = new Canvas(); this.Content = canvas; // 创建一个矩形 Rectangle rectangle = new Rectangle { Width = 100, Height = 100, StrokeThickness = 2, // 边框厚度 Stroke = Brushes.Black, // 边框颜色 Fill = new SolidColorBrush(Colors.Red) // 填充颜色 }; // 将矩形放置到Canvas上 Canvas.SetLeft(rectangle, 50); Canvas.SetTop(rectiangle, 50); // 把矩形添加到Canvas中 canvas.Children.Add(rectangle); } } } ``` 这段代码演示了如何通过编程方式创建一个红色矩形,并将其定位在一个窗口中的指定位置。 #### 高级绘图功能 对于更复杂的场景,比如需要支持自由手绘或者橡皮擦等功能,则可能需要用到路径(Path)和其他高级特性。例如,在构建类似于 Microsoft Paint 的应用程序时,可以通过监听鼠标事件来捕捉用户的输入轨迹,并即时渲染出来[^2]。 ##### 路径(Path) 示例 路径允许我们定义更加灵活的几何形状,如下所示的是一个三角形的定义方法: ```xml <Path Stroke="Black" StrokeThickness="1" Fill="Yellow"> <Path.Data> <GeometryGroup> <LineGeometry StartPoint="10,100" EndPoint="50,10" /> <LineGeometry StartPoint="50,10" EndPoint="90,100" /> <LineGeometry StartPoint="90,100" EndPoint="10,100" /> </GeometryGroup> </Path.Data> </Path> ``` 此片段说明了如何组合多个线条形成一个多边形区域。 ### 结论 综上所述,无论是在设计阶段还是运行期间调整界面元素样式,WPF 都提供了丰富的选项让开发者随心所欲地控制每一个细节。从简单的形状填充到复杂的矢量图形编辑器开发皆可胜任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值