WPF自定义元素与Windows Forms交互全解析
1. WPF自定义绘制元素
在WPF中,大多数元素通过组合(composition)来创建其视觉外观。也就是说,一个典型的元素是由其他更基础的元素构建而成。例如,用户控件的复合元素使用标记定义,其处理方式与自定义窗口中的XAML相同;自定义控件的视觉树通过控件模板定义;创建自定义面板时,无需定义任何视觉细节,复合元素由控件使用者提供并添加到Children集合中。
这与Windows Forms等早期用户界面技术不同。在Windows Forms中,一些控件使用Windows API的User32库进行自绘制,大多数自定义控件则依赖GDI+绘图类从头开始渲染。由于Windows Forms不提供可直接添加到用户界面的高级图形基元(如WPF的矩形、椭圆和路径),任何需要非标准视觉外观的控件都需要自定义渲染代码。
但组合方式也有其局限性,最终还是需要某些类来负责绘制内容。在WPF中,这个过程通常发生在元素树的较底层。在典型的窗口中,渲染由单个文本、形状和位图完成,而非高级元素。
1.1 OnRender()方法
要进行自定义渲染,元素必须重写从基类UIElement继承的OnRender()方法。OnRender()方法并不一定替代组合方式,有些控件使用OnRender()绘制视觉细节,再通过组合将其他元素层叠在其上。例如,Border类在OnRender()方法中绘制边框,Panel类在OnRender()方法中绘制背景。这两个类都支持子内容,子内容会渲染在自定义绘制的细节之上。
OnRender()方法接收一个DrawingContext对象,该对象提供了一组用
超级会员免费看
订阅专栏 解锁全文
80

被折叠的 条评论
为什么被折叠?



