当前位置: 首页 > article >正文

C# WPF编程-画刷(Brush)填充图形对象的颜色或图案

C# WPF 画刷(Brush)填充图形对象的颜色或图案

  • 1.SolidColorBrush
  • 2.LinearGradientBrush
  • 3. RadialGradientBrush
  • 5. DrawingBrush
  • 6. VisualBrush
  • 综合示例

1.SolidColorBrush

  • SolidColorBrush是最简单的画刷类型,用于以纯色填充区域。
<Rectangle Width="100" Height="100">
    <Rectangle.Fill>
        <SolidColorBrush Color="Blue"/>
    </Rectangle.Fill>
</Rectangle>

或者代码实现

var rectangle = new Rectangle { Width = 100, Height = 100 };
rectangle.Fill = new SolidColorBrush(Colors.Blue);

在这里插入图片描述

2.LinearGradientBrush

LinearGradientBrush用于创建线性渐变效果,可以指定多个颜色停止点(GradientStop)来定义渐变的颜色过渡。

<Rectangle Width="200" Height="100">
    <Rectangle.Fill>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
            <GradientStop Color="Yellow" Offset="0.0" />
            <GradientStop Color="Red" Offset="0.25" />
            <GradientStop Color="Blue" Offset="0.75" />
            <GradientStop Color="LimeGreen" Offset="1.0" />
        </LinearGradientBrush>
    </Rectangle.Fill>
</Rectangle>

在这里插入图片描述

3. RadialGradientBrush

RadialGradientBrush与LinearGradientBrush类似,但它创建的是基于圆心向外辐射的渐变效果。

<Ellipse Width="200" Height="100">
    <Ellipse.Fill>
        <RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
            <GradientStop Color="Yellow" Offset="0" />
            <GradientStop Color="Red" Offset="0.25" />
            <GradientStop Color="Blue" Offset="0.75" />
            <GradientStop Color="LimeGreen" Offset="1" />
        </RadialGradientBrush>
    </Ellipse.Fill>
</Ellipse>

在这里插入图片描述
4. ImageBrush
ImageBrush允许使用图像作为填充内容。

<Rectangle Width="200" Height="100">
    <Rectangle.Fill>
        <ImageBrush ImageSource="Images/Linux-logo.png"/>
    </Rectangle.Fill>
</Rectangle>

在这里插入图片描述

5. DrawingBrush

DrawingBrush可用于绘制矢量图形或位图作为填充内容。

<Rectangle Width="200" Height="100">
    <Rectangle.Fill>
        <DrawingBrush>
            <DrawingBrush.Drawing>
                <GeometryDrawing Geometry="M0,0 L1,0 0,1 Z">
                    <GeometryDrawing.Brush>
                        <SolidColorBrush Color="Red"/>
                    </GeometryDrawing.Brush>
                </GeometryDrawing>
            </DrawingBrush.Drawing>
        </DrawingBrush>
    </Rectangle.Fill>
</Rectangle>

在这里插入图片描述

6. VisualBrush

VisualBrush允许你用另一个UI元素的内容作为填充内容。

<Rectangle Width="200" Height="100">
    <Rectangle.Fill>
        <VisualBrush>
            <VisualBrush.Visual>
                <TextBlock Text="Hello, WPF!" FontSize="20"/>
            </VisualBrush.Visual>
        </VisualBrush>
    </Rectangle.Fill>
</Rectangle>

在这里插入图片描述

综合示例

<Window x:Class="WpfBaseDemo.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBaseDemo"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Grid>
        <!-- 定义行 -->
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        
        <!-- 定义列 -->
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        
        
        <Rectangle Grid.Row="0" Grid.Column="0">
            <Rectangle.Fill>
                <SolidColorBrush Color="Blue" Opacity="0.8"/>
            </Rectangle.Fill>
        </Rectangle>

        <Rectangle Grid.Row="0" Grid.Column="1">
            <Rectangle.Fill>
                <LinearGradientBrush StartPoint="0 0" EndPoint="1 1">
                    <GradientStop Offset="0.00" Color="Yellow"/>
                    <GradientStop Offset="0.25" Color="Red"/>
                    <GradientStop Offset="0.50" Color="Blue"/>
                    <GradientStop Offset="0.75" Color="LimeGreen"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>

        <Ellipse Grid.Row="0" Grid.Column="2">
            <Ellipse.Fill>
                <RadialGradientBrush Center="0.5 0.5" GradientOrigin="0.5 0.5" RadiusX="0.5" RadiusY="0.5">
                    <GradientStop Offset="0.00" Color="Yellow"/>
                    <GradientStop Offset="0.25" Color="Red"/>
                    <GradientStop Offset="0.75" Color="Blue"/>
                    <GradientStop Offset="1.00" Color="LimeGreen"/>
                </RadialGradientBrush>
            </Ellipse.Fill>
        </Ellipse>

        <Rectangle Grid.Row="1" Grid.Column="0">
            <Rectangle.Fill>
                <ImageBrush ImageSource="Images/Linux-logo.png" Stretch="Uniform" AlignmentX="Left" AlignmentY="Top"/>
            </Rectangle.Fill>
        </Rectangle>

        <Rectangle Grid.Row="1" Grid.Column="1">
            <Rectangle.Fill>
                <DrawingBrush>
                    <DrawingBrush.Drawing>
                        <GeometryDrawing Geometry="M0,0 L1,0 0,1 Z">
                            <GeometryDrawing.Brush>
                                <SolidColorBrush Color="Red"/>
                            </GeometryDrawing.Brush>
                        </GeometryDrawing>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Rectangle.Fill>
        </Rectangle>

        <Rectangle Grid.Row="1" Grid.Column="2">
            <Rectangle.Fill>
                <VisualBrush>
                    <VisualBrush.Visual>
                        <Canvas>
                            <TextBlock Text="Hello" FontSize="20" Opacity="0.6" Foreground="Red"/>
                            <Label Content="Hello"></Label>
                        </Canvas>
                    </VisualBrush.Visual>
                </VisualBrush>
            </Rectangle.Fill>
        </Rectangle>
    </Grid>
</Window>

在这里插入图片描述


http://www.kler.cn/a/589731.html

相关文章:

  • SpringBoot3和企业版Splunk集成(附加docker配置)
  • CoreData 调试警告:多个 NSEntityDescriptions 声明冲突的解决
  • 数模AI使用教程(新) 2025.3.17
  • Windows安全日志Defender 的配置被修改5007
  • Python数据可视化——生成数据(一)
  • Python基于Django和协同过滤算法实现电影推荐系统功能丰富版
  • 跟着AI复习一下pytorch原理和操作
  • OpenCV计算摄影学(22)将输入的彩色图像转换为两种风格的铅笔素描效果函数pencilSketch()
  • 嵌入式硬件篇---龙芯GPIO控制
  • CTF WEB题
  • 每日一题--进程与协程的区别
  • 【在校课堂笔记】Python 第5节课 总结
  • axios 和 fetch异同点
  • Java继承与反思,单例模式与静态的思考
  • 【redis】Jedis 操作 Redis 基础指令(下)
  • Mysql中创建表时的约束条件
  • 力扣刷题——2181.合并零之间的节点
  • Java中的GC是什么?
  • STM32U575RIT6单片机(四)
  • 基于WebRTC与P2P技术,嵌入式视频通话EasyRTC实现智能硬件音视频交互,适配Linux、ARM、RTOS、LiteOS