wpf DrawingContext 绘图方式
来源:互联网 发布:数据归一化 实例 编辑:程序博客网 时间:2024/05/16 12:55
1.继承UIElement,重写OnRender方法
public partial class Window5 : Window{ public Window5() { InitializeComponent(); this.Content = new RectangleElement(); }}public class RectangleElement : UIElement{ protected override void OnRender(DrawingContext drawingContext) { drawingContext.DrawRectangle(Brushes.Red, null, new Rect(0, 0, 100, 20)); base.OnRender(drawingContext); }}
2.DrawingVisual 轻量级绘图,只提供显示和测试点击功能,DrawingVisual继承自ContainerVisual,所以其也是Visual集合容器
public class RectangleElement : UIElement{ DrawingVisual visual; public RectangleElement() { visual = new DrawingVisual(); var drawingContext = visual.RenderOpen(); drawingContext.DrawRectangle(Brushes.Red, null, new Rect(0, 0, 100, 20)); drawingContext.Close(); this.AddVisualChild(visual); } protected override Visual GetVisualChild(int index) { return visual; } protected override int VisualChildrenCount { get { return 1; } }}DrawingVisual无法单独存在,必须放在一个容器中(需要有布局系统)呈现.我们看到每次添加一个Visual的时候,总还是难免要实现GetVisualChild和VisualChildrenCount这两个成员.除了ContainerVisual这些轻量级的对象,Panel会帮我们做掉上面这些工作.但基类却变成了UIElement.事实上当添加Visual以后,同时还要计算布局的尺寸,所以有必要的话,可以对UIElement或者FrameworkElement重写以上两个成员。因为有时候我们只需要一次布局和添加多个Visual,以提升性能
重写默认窗体的视觉树
public partial class Window5 : Window{ DrawingVisual dv; public Window5() { InitializeComponent(); dv = new DrawingVisual(); } protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo) { var drawingContext = dv.RenderOpen(); drawingContext.DrawRectangle(Brushes.Red, null, new Rect(0, 0, this.ActualWidth, ActualHeight)); drawingContext.Close(); base.OnRenderSizeChanged(sizeInfo); } protected override Visual GetVisualChild(int index) { return dv; }}
- wpf DrawingContext 绘图方式
- WPF绘图
- WPF绘图代码
- WPF之绘图
- C# WPF Canvas绘图
- WPF绘图控件
- WPF中绘图
- WPF几何绘图之概述
- wpf轻量绘图DrawingVisual
- SetRop2设定绘图方式
- 用多态的方式绘图???
- 第二种绘图方式
- 第三种绘图方式
- ios-绘图的方式
- OpenG绘图方式比较
- 以WPF绘图简单的圆形
- 以WPF绘图简单的圆形
- 以WPF绘图简单的圆形
- jquery的form插件的使用
- 王老师讲解:SQL Server 2005数据库nolock的使用【来自Aisino_BBS】
- unity3d 怪物的简单ai
- C for linux 更改当前工作目录函数 chdir 或 fchdir
- 使用maven部署一个工程到服务器上
- wpf DrawingContext 绘图方式
- oracle 本地建库语句
- android获取string.xml的值
- win7下架设asp.net+IIS7.0服务器
- UITableView的基本知识讲解
- AudioRecord MeadiaRecord
- Powershell脚本功能分析-自动备份!
- 最长公共子串(连续)问题
- asp.net 保留2位小数 四舍五入