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

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>

在这里插入图片描述

相关文章:

  • STM32——独立看门狗(IWDG)
  • Ollama + CherryStudio:构建本地私有知识库
  • 攻克 3D 模型网站建设难题,看迪威系统优势
  • 台达PLC转太网转换的教程案例(台达DVP系列)
  • 【WEB APIs】BOM-操作浏览器
  • Linux 操作系统简介
  • GLOW-TTS
  • gitlab将本地项目提交到远程dev分支
  • 基于SpringBoot + Vue 的图书商城系统
  • Word 小黑第20套
  • Java 买百鸡问题
  • 基于大模型的鼻中隔偏曲预测及手术治疗方案研究报告
  • Linux目录结构以及文件操作
  • Android 11.0 监听某个app启动获取应用使用时长功能实现
  • iStore插件的使用和编译
  • LeetCode hot 100—验证二叉搜索树
  • 【DFS】二叉树中的深搜
  • 【实测闭坑】LazyGraphRAG利用本地ollama提供Embedding model服务和火山引擎的deepseek API构建本地知识库
  • 【自定义微信小程序拉下选择过滤组件】searchable-select
  • Spring Boot 整合 Elasticsearch:打造高性能全文检索实战
  • 张炜琳已任三明市委常委、宣传部部长
  • 工业富联一季度净利增长25%,云计算业务营收增长超50%
  • “五一”假期,又有多地将向社会开放政府机关食堂
  • TAE联手加州大学开发出新型核聚变装置:功率提升百倍,成本减半
  • 赛力斯拟赴港上市:去年扭亏为盈净利59亿元,三年内实现百万销量目标
  • 公交公司须关注新出行需求:“单车巴士”能否常态化