WPF学习笔记4

4.画笔

如何使用 WpF提供的画笔绘制背景和前景。它显示了在 Button
元素的一条 Path和 Backgromd属 性上使用各种画笔的效果。

soldColorBrush
soldColorBrush,顾名思义,这支画笔使用纯色。全部区域用 同一种颜色绘制。把 Backgromd属性设置为定义纯色的字符串,就可以定义纯色。使用BrushValueSerializer 把该字符串转换为一个 solidColorBrush元 素。

        <Button Height="30" Background="PapayaWhip">
            Solid Color
        </Button>

当然,设置 Backgound子元素,把 solidColorBrush元 素添加为它的内容,也可以得到同样效
果。 应用程序中的第一个按钮把 PapayaWhip 用作纯背景色 :

        <Button Content="Solid Color" Margin="40">
            <Button.Background>
                <SolidColorBrush Color="PapayaWhip"/>
            </Button.Background>
        </Button>

LinearGradientBrush
      对于平滑的颜色变化,可 以使用 LinearGradientBrush,如第二个按钮所示 。 这个画笔定义 了StartPoint  和EndPoint 属性。使用这些属性可以为线性渐变指定二维坐标。 默认的渐变方向是从(0,0)到(1,1)的对角线。 定义其他值可以给渐变指定不同的方 向。 例如,StartPoint 指定为(0,0)  EndPoint 指定为(0,1),就得到了一个垂直渐变。 StartPoint 不变,EndPoint 值指定为(1,0) ,就得到了一个水平渐变。
      通过该画笔的内容,可 以用 GradienStop元 素定义指定偏移位置的颜色值。 在各个偏移位置之间,颜色是平滑过渡的。
 

        <Button Content="Linear Gradient Brush" Margin="10">
            <Button.Background>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Offset="0" Color="LightGreen"/>
                    <GradientStop Offset="0.4" Color="Green"/>
                    <GradientStop Offset="1" Color="DarkGreen"/>
                </LinearGradientBrush>
            </Button.Background>
        </Button>

效果图:

 

RadialGradientBrush

       使用RadialGradientBrush 可 以以放射方式产生平滑的颜色渐变。使用了RadialGradientBrush 。 该画笔定义了从GradientOrigin点开始的颜色。



 

        <Canvas Width="200" Height="150">
            <Path Canvas.Top="0" Canvas.Left="20" Stroke="Black">
                <Path.Fill>
                    <RadialGradientBrush GradientOrigin="0.2,0.2">
                       <GradientStop Offset="0" Color="LightBlue"/>
                        <GradientStop Offset="0.6" Color="Blue"/>
                        <GradientStop Offset="1.0" Color="DarkBlue"/>
                    </RadialGradientBrush>
                </Path.Fill>
                <Path.Data>
                    <CombinedGeometry GeometryCombineMode="Union">
                        <CombinedGeometry.Geometry1>
                            <EllipseGeometry Center="80,60" RadiusX="80"
                                              RadiusY="40" />
                        </CombinedGeometry.Geometry1>
                        <CombinedGeometry.Geometry2>
                            <RectangleGeometry Rect="30,60 105 50"/>
                        </CombinedGeometry.Geometry2>
                    </CombinedGeometry>
                </Path.Data>
            </Path>
        </Canvas>

效果图:

 

DrawingBrush

         DrawingBrush可以定义用画笔绘制的图形,用画笔回执的图形在GeometryDrawing元素中定义Gemetry属性中的GeometryGroup元素包含本章前面讨论的Geometry元素。

        <Button Content="Drawing Brush" Margin="10" Padding="10">
            <Button.Background>
                <DrawingBrush>
                    <DrawingBrush.Drawing>
                        <GeometryDrawing Brush="Red">
                            <GeometryDrawing.Pen>
                                <Pen>
                                    <Pen.Brush>
                                        <SolidColorBrush>Blue</SolidColorBrush>
                                    </Pen.Brush>
                                </Pen>
                            </GeometryDrawing.Pen>
                            <GeometryDrawing.Geometry>
                                <PathGeometry>
                                    <PathGeometry.Figures>
                                        <PathFigure StartPoint="70,40">
                                            <PathFigure.Segments>
                                                <BezierSegment Point1="90,37" Point2="130,46"
                                                               Point3="150,63" />
                                                <LineSegment Point="120,110" />
                                                <BezierSegment Point1="100,95"
                                                               Point2="70,90" Point3="45,91"/>
                                                <LineSegment Point="70,40"/>
                                            </PathFigure.Segments>
                                        </PathFigure>
                                    </PathGeometry.Figures>
                                </PathGeometry>
                            </GeometryDrawing.Geometry>
                        </GeometryDrawing>
                    </DrawingBrush.Drawing>
                </DrawingBrush>
            </Button.Background>
        </Button>

 ImageBrush

      要把图像加载到画笔中,可 以使用 ImgeBmsh元 素。 通过这个元素,显示 ImageSource属 性定义的图像。 图像可以从文件系统中访问,或者在程序集的资源中访问。 在本例中,图像添加为程序
集的一个资源,并通过程序集和资源名来引用 :
 

        <Button Content="Image Brush" Width="100" Height="80" Margin="5"
                Foreground="White">
            <Button.Background>
                <ImageBrush ImageSource="C:\Users\Administrator\Pictures\ooopic_1520921385.ico"/>
            </Button.Background>
        </Button>

效果图:

 

Adorner是WPF中一种特殊的视觉元素,可以用于在其他元素上添加装饰或者附加功能。Adorner通常用于实现在用户界面上的一些特殊效果,比如鼠标悬停提示、错误提示、操作提示等。 Adorner需要继承自Adorner类,并在构造函数中调用基类的构造函数,并将需要装饰的元素作为参数传递进去。Adorner类中有一个AdornedElement属性,用于获取被装饰的元素。 Adorner类中有一个OnRender方法,用于绘制Adorner的外观。在OnRender方法中可以使用DrawingContext来绘制Adorner的外观,也可以使用VisualBrush来填充Adorner的内容。 Adorner的使用方法: 1. 创建一个Adorner类,继承自Adorner类,并在构造函数中调用基类的构造函数,并将需要装饰的元素作为参数传递进去。 2. 重写Adorner类的OnRender方法,用于绘制Adorner的外观。 3. 在需要装饰的元素上调用AdornerLayer.GetAdornerLayer方法获取AdornerLayer对象。 4. 调用AdornerLayer的Add方法,将Adorner添加到AdornerLayer中。 下面是一个简单的例子: ```csharp public class MyAdorner : Adorner { public MyAdorner(UIElement adornedElement) : base(adornedElement) { } protected override void OnRender(DrawingContext drawingContext) { base.OnRender(drawingContext); // 绘制Adorner的外观 drawingContext.DrawEllipse(Brushes.Red, null, new Point(AdornedElement.RenderSize.Width / 2, AdornedElement.RenderSize.Height / 2), AdornedElement.RenderSize.Width / 2, AdornedElement.RenderSize.Height / 2); } } // 在需要装饰的元素上添加Adorner var adornedElement = new Button { Content = "Click me!" }; var adornerLayer = AdornerLayer.GetAdornerLayer(adornedElement); var myAdorner = new MyAdorner(adornedElement); adornerLayer.Add(myAdorner); ``` 这个例子中,我们创建了一个MyAdorner类,继承自Adorner类,并重写了OnRender方法,在OnRender方法中绘制了一个红色的圆形。然后我们创建了一个Button元素,并将其作为参数传递给MyAdorner的构造函数,创建了一个AdornerLayer对象,并调用Add方法将MyAdorner添加到AdornerLayer中,从而实现了在Button元素上添加了一个红色的圆形装饰器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值