WPF学习笔记之10: ImageDrawing vs DrawingImage

先BS一下MS,文字游戏玩死人了!

接下来看看派生关系图:


呵呵比较清楚了吧,来看看MSDN的解释
Drawing:

1. Drawing对象是轻量对象,允许您将几何形状、图像、文本和媒体添加到应用程序中。

2. Drawing对象被视为轻量对象,因为它们不提供对布局系统、输入概述和焦点的支持。因为这些对象具有性能优势,所以绘图是背景和剪贴画的理想选择。当在 Visual 级别编程时,也可使用绘图。

ImageSource:
ImageSource表示一个具有宽度、高度和 ImageMetadata 的对象类型.

到这儿,我先结论就很明显了:

Drawing(ImageDrawing)表示怎么画
ImageSource(DrawingImage)表示画什么。

最后看一段Sample Code,也是MS的

< Page 
  xmlns
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation "
  xmlns:x
= " http://schemas.microsoft.com/winfx/2006/xaml "
  xmlns:PresentationOptions
= " http://schemas.microsoft.com/winfx/2006/xaml/presentation/options "  
  xmlns:mc
= " http://schemas.openxmlformats.org/markup-compatibility/2006 "
  mc:Ignorable
= " PresentationOptions "
  Background
= " White "  Margin = " 20 " >

  
< Border BorderBrush = " Gray "  BorderThickness = " 1 "  
    HorizontalAlignment
= " Left "  VerticalAlignment = " Top "
    Margin
= " 10 " >

    
<!--  This image uses a Drawing  object   for  its source.  -->
    
< Image >
      
< Image.Source >
        
< DrawingImage PresentationOptions:Freeze = " True " >
          
< DrawingImage.Drawing >
            
< GeometryDrawing >
              
< GeometryDrawing.Geometry >
                
< GeometryGroup >
                  
< EllipseGeometry Center = " 50,50 "  RadiusX = " 45 "  RadiusY = " 20 "   />
                  
< EllipseGeometry Center = " 50,50 "  RadiusX = " 20 "  RadiusY = " 45 "   />
                
</ GeometryGroup >
              
</ GeometryDrawing.Geometry >
              
< GeometryDrawing.Brush >
                
< LinearGradientBrush >
                  
< GradientStop Offset = " 0.0 "  Color = " Blue "   />
                  
< GradientStop Offset = " 1.0 "  Color = " #CCCCFF "   />
                
</ LinearGradientBrush >
              
</ GeometryDrawing.Brush >
              
< GeometryDrawing.Pen >
                
< Pen Thickness = " 10 "  Brush = " Black "   />
              
</ GeometryDrawing.Pen >
            
</ GeometryDrawing >
          
</ DrawingImage.Drawing >
        
</ DrawingImage >
      
</ Image.Source >
    
</ Image >
  
</ Border >

</ Page >

转载于:https://www.cnblogs.com/jacksonyin/archive/2008/04/07/1140559.html

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、付费专栏及课程。

余额充值