C# WPF编程-概述

C# WPF编程-基础知识

  • 概述
    • WPF高级API
    • 硬件加速与WPF
    • 分辨率无关性
    • WPF体系结构
    • WPF的主要类
    • WPF工具包
    • Visual Studio IDE

概述

WPF(Windows Presentation Foundation)是用于Windows的现代图形显示系统。引入了“内置硬件加速”和“分辨率无关”等创新功能。

WPF高级API

  • 类似Web的布局模型。
  • 丰富的绘图模型。
  • 丰富的文本模型。
  • 作为首要编程概念的动画。
  • 支持音频和视频媒体。
  • 样式和模版。
  • 命令。
  • 声明式用户界面。
  • 基于页面的应用程序。

硬件加速与WPF

显卡在支持特定渲染特性和优化方面是有区别的。大多数计算机显卡硬件可以支持3D绘图和动画等WPF功能。

分辨率无关性

WPF根据系统DPI设置进行缩放,并不根据物理显示设备的DPI进行缩放。
WPF窗口以及其中的所有元素都是使用与设备无关的单位进行度量。定义为1/96英寸。

WPF体系结构

WPF使用多层体系结构。
在这里插入图片描述

  • PresentationFramework.dll包含WPF顶层的类型,包括表示窗口,面板以及其他类型控件的类型。
  • PresentationCore.dll包含了基础类型,如UIElement类和Visual类,所有形状类和控件类都继承自者两个类。
  • WindowsBase.dll包含了更多基本要素,如DispatcherObject类和DependencyObject类。
  • milcore.dll是WPF渲染系统的核心。
  • WindowsCodecs.dll是一套提供图像支持的低级API(如处理,显示及缩放位图和JPEG图像)。
  • Direct3D是一套低级API,WPF应用程序中的所有图形都有它进行渲染。
  • User32用于决定哪些程序实际占有桌面的哪一部分。

WPF的主要类

在这里插入图片描述
注意:WPF核心名称空间以System.Windows开头。唯一例外是由System.Windows.Forms开头的名称空间,他们是Windows窗体工具包的一部分。

  1. System.Threading.DispatcherObject类:
    WPF应用程序使用单线程亲和(Single-Thread Affinity,STA)模型,这意味着整个用户界面由单个线程拥有。每个WPF应用程序有协调消息的调度程序管理。通过继承自DispatcherObject类,用户界面中的每个元素都可以检查代码是否正确的线程上运行,并能通过访问调度程序为用户界面线程封送代码。
  2. System.Windows.DependencyObject类:
    在WPF中,主要通过属性与屏幕上的元素进行交互。最终结果是依赖项属性(dependency porperty)特性,通过继承自DependencyObject类,WPF类可获得对依赖项属性的支持。
  3. System.Windows.Media.Visual类:
    在WPF窗口中显示的每个元素本质上都是Visual对象。可将Visual类视为绘图对象,其中封装了绘图指令,如何执行绘图的附件细节以及基本功能。
  4. System.Windows.UIElement类:
    UIElement类增加了对WPF本质特征的支持,如布局,输入,焦点和事件等。
  5. System.Windows.FrameworkElement类:
    FrameworkElement类是WPF核心继承树中的最后一站。该类实现了一些全部由UIElement类定义的成员。
  6. System.Windows.Shapes.Shape类:
    基本的形状类(如Rectangle类,Polygon类,Ellipse类,Line类以及Path类)都继承自该类。
  7. System.Windows.Controls.Control类:
    控件(control)是可与用户进行交互的元素。Control类为设置字体以及前景色与背景色提供了附加属性。
  8. System.Windows.Controls.ContentControl类:
    ContentControl类是所有具有单一内容的控件的基类,包括简单的标签乃至窗口的所有内容。
  9. System.Windows.Controls.ItemsControl类:
    ItemsControl类是所有显示选项集合的控件的基类,如ListBox和TreeView控件。
    10.System.Windows.Controls.Panel类:
    Panel类是所有布局容器的基类,布局容器可包含一个或多个子元素,并按特定规则对子元素进行排列的元素。

WPF工具包

WPF工具包提供了一套控件用于创建柱形图,饼图,气泡图,散点图以及线图。

Visual Studio IDE

集成开发环境不断更新版本,目前最新的是Visual Studio 2022。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/537791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 框架之一:简介及环境搭建详细步骤

1. MyBatis 是什么? MyBatis 是一个流行的、轻量级的 Java 持久层框架,它简化了与数据库交互和 SQL 映射的过程。MyBatis 取代了 JDBC 原始 API 的大量繁琐工作,允许开发者将更多的精力放在业务逻辑上而不是处理数据访问细节。 mybatis 是一款…

2024年腾讯云学生用户便宜云服务器购买攻略

2024年腾讯云学生服务器优惠活动「云校园」,学生服务器优惠价格:轻量应用服务器2核2G学生价30元3个月、58元6个月、112元一年,轻量应用服务器4核8G配置191.1元3个月、352.8元6个月、646.8元一年,CVM云服务器2核4G配置842.4元一年&…

libusb_Qt使用

Libusb libusb_github 建议直接下载库,编译好麻烦 QT调用 .pro文件添加: win32: LIBS -L$$PWD/LIB/libusb/x64/ -llibusb-1.0.cpp调用即可 #include "LIB/libusb/libusb.h" void class_name::fun(){/* 1. */libusb_init(NULL);/**/str…

rt-thread之sal+lwip的tcp客户端示例记录(接收非阻塞)

示例记录 #include "lwip_test.h" #include "lwip/sockets.h" #include "netdev.h"#define DBG_ENABLE #define DBG_TAG "lwip.tst" #define DBG_LVL DBG_LOG#include <rtdbg.h>#define SERVER_PORT 8080 #define SERVER_HOST …

1、计划任务介绍

Windows计划任务介绍 1、含义&#xff1a; 简单点就是定时执行任务。 在许多场景下&#xff0c;我们定时执行一些任务。比如&#xff1a;定时拉取、备份文件&#xff0c;更新代码等等操作。 WinR打开运行框&#xff0c;输入&#xff1a;control schedtasks&#xff0c;就会…

LLM和自动驾驶强强联合 | DriveDreamer-2:自动驾驶定制视频生成世界模型!

文章链接&#xff1a;https://arxiv.org/pdf/2403.06845.pdf 项目文档&#xff1a;https://drivedreamer2.github.io/ 自动驾驶是最近几年非常火热的方向&#xff0c;那LLM和视频生成在自动驾驶领域有哪些应用呢&#xff1f;今天和大家一起学习一下最新的一篇工作————Driv…

多线程相关

JMM&#xff08;内存模型&#xff09; JMM三个特性&#xff1a; 原子性 一个或者多个操作在CPU执行的过程中不被中断的特性&#xff0c;要么全部成功&#xff0c;要么全部失败可见性 一个线程修改了共享变量的值后&#xff0c;其他线程能够立即看到这个修改有序性 程序执行的…

武汉LUG报名开启!这次我们来到了华中科技大学,3月23日(周六)来见面吧!

内容来源&#xff1a;deepin 社区 LUG 不间断&#xff0c;精彩不停歇&#xff0c;经过一个月的修整&#xff0c;2024年3月23日下午&#xff0c;我们将在华中科技大学东校区举办 3月 WHLUG&#xff0c;欢迎大家来到现场&#xff0c;和我们一起交流技术&#xff0c;分享自己学习过…

惊艳到了,每个开发人员都必须要知道的6个HTML属性!

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello&#xff0c;大家好&#xff0c;我是 Sunday。 说起 HTML 很多同学都会认为&#xff0c;这不就是小菜一碟吗&#xff…

大型污水处理站运维公司怎么选择

大型污水处理站运维公司的选择是关乎环境保护和城市发展的重要决策。在如今污水治理领域日益重要的背景下&#xff0c;选择一家专业的运维公司对于确保污水处理站的高效运行、提高处理效果和保护环境具有关键意义。那么&#xff0c;我们应该如何选择适合自己的大型污水处理站运…

Css基础——精灵图(sprites)和字体图标

1、精灵图 1.1、精灵图的由来 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送 请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度。 因此&#xff0c;为了有效地减…

腾讯云服务器地域是什么?地域选择看着一篇就够了

腾讯云服务器地域怎么选择&#xff1f;不同地域之间有什么区别&#xff1f;腾讯云哪个地域好&#xff1f;地域选择遵循就近原则&#xff0c;访客距离地域越近网络延迟越低&#xff0c;速度越快。腾讯云百科txybk.com告诉大家关于地域的选择还有很多因素&#xff0c;地域节点选择…