首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIElement和Windows控件之间有什么区别?

UIElement和Windows控件之间有什么区别?
EN

Stack Overflow用户
提问于 2014-05-31 20:37:38
回答 1查看 870关注 0票数 0

如果我想在传统的Windows窗体中创建一个带有绘图区域的窗体,我将扩展面板类,然后重写onPaint方法来执行我的自定义绘图,如下所示:

代码语言:javascript
复制
public class SpecialPanel : System.Windows.Forms.Panel
{
    protected override void OnPaint(PaintEventArgs e)
    {
        Graphics G = e.Graphics;
        G.DrawEllipse(new Pen(Color.Red), 50, 80, 50, 10);

    }
}

但是在WPF中,如果我试图扩展画布类,就没有onPaint方法来覆盖

代码语言:javascript
复制
public class SpecialCanvas : Canvas //Error no OnPaint method
{
    public override OnPaint(PaintEventArgs e)
    {

    }
}

如果我想在画布上画画,我会以类似的方式这样做:

代码语言:javascript
复制
        Canvas.SetLeft(shape.shape, r.Next(1, 1150));
        Canvas.SetTop(shape.shape, r.Next(1, 500));
        SolidColorBrush b = new SolidColorBrush(Windows.UI.Color.FromArgb(255, (byte)r.Next(1, 255), (byte)r.Next(1, 255), (byte)r.Next(1, 255)));
        shape.shape.Fill = b;
        shape.shape.Stroke = b;
        Cann.Children.Add(shape.shape);

其中Cann是一个画布对象,shape.shape是一个矩形。

我的问题是,这些绘制形式的方法之间的根本区别是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-01 12:03:05

与GDI/GDI+的基本区别

(WPF)从根本上不同于图形设备接口(,GDI)和GDI+,要求以不同的方式处理编程的许多方面。本主题简要概述了主要的区别。

Windows

使用GDI/GDI+ API构建的应用程序使用许多窗口,并驻留在父窗口(MDI)下。在WPF中构建的应用程序只有一个窗口。

测度单位

使用GDI/GDI+ API构建的应用程序使用硬件像素作为度量单位。在这些应用中,当显示设备的分辨率增加时,产生的图像就会下降。WPF中的应用程序使用独立于设备的单元(1/96-英寸)作为测量单位。当系统的新闻部为96时,两者是相等的。

控制定位

使用GDI+构建的应用程序使用绝对定位。当父元素被调整大小时,子元素不会随之调整大小。WPF中构建的应用程序可以使用绝对定位、动态定位或数据绑定定位.无论是绝对定位还是动态定位,控件都相对于父元素定位。

图像基

GDI/GDI+中形成的图像是基于像素的光栅图像.在WPF中形成的图像可以是可伸缩的矢量图像。

渲染引擎

GDI和GDI+都建立在Win32上。GDI基于设备上下文的概念,其中应用程序获取设备上下文的句柄,并使用句柄与设备交互。GDI+是GDI的包装器,它创建了一个C++图形对象。另一方面,WPF是建立在DirectX上的,这意味着它在执行绘图操作时可以利用硬件加速。

渲染模式

对于GDI和GDI+,呈现使用立即呈现:应用程序重新绘制无效的区域。在WPF中,呈现使用保留呈现:应用程序跟踪绘图信息,但系统执行绘制。

绘画

对于GDI和GDI+,裁剪用于确定已失效并需要绘制的区域的界限。在WPF中,油漆是从后到前进行的,而组件之间则相互覆盖。

笔和画笔

GDI和GDI+使用了当前笔刷和当前笔的概念。在WPF中,画笔和笔必须与每个绘图调用一起传递。

涂料区域优化

油漆区域优化是用GDI或GDI+绘制涂料的重要组成部分。在WPF中,它不被考虑。

Events

GDI和GDI+使用使用订阅/通知的事件和事件处理程序委托。WPF使用冒泡、隧道和直接事件通知,事件在VisualTree上来回传播。

视频和音频

对视频和音频的直接支持不是由GDI+或Windows提供的,而是必须通过像这样的媒体播放器获得。WPF直接支持视频和音频。

source: http://www.leadtools.com/help/leadtools/v18/dh/to/leadtools.topics~leadtools.topics.differencesbetweengdiandwpf.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23974359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档