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。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】-- 使用docker部署Springboot+vue项目到虚拟机

虚拟机系统:CentOS 7 连接虚拟机工具:MobaXterm 以下在安装好虚拟机和docker基础上操作。 安装docker:【Docker】-- 如何安装docker-CSDN博客 一、部署Mysql 1、安装mysql docker中执行: docker run -d \--name mysql \-p 3…

Python + Jmeter 实现自动化性能压测

Step01: Python脚本开发 文件路径:D://wl//testproject//Fone-grpc//project1//test_client.py Python 脚本作用: 通过 grpc 调用底层 c 的接口,做数据库的数据插入与查询操作,然后将返回的结果进行拼接与输出。 2.代码里面将…

基于SpringBoot+MYSQL+Vue的校园管理系统

目录 1、前言介绍 2、主要技术 3、系统流程分析 3.1、操作流程 3.2、添加信息流程 3.3、删除信息流程 4、系统设计 4.1 系统体系结构 4.2开发流程设计 4.3 数据库设计原则 4.4 数据表 5、运行截图(部分) 5.1管理员功能模块 5.2用户功能模块 5.3院校管理员功能模块…

使用耳机壳UV树脂制作私模定制耳塞的价格如何呢?

耳机壳UV树脂制作私模定制耳塞的价格因多个因素而异,如材料、工艺、设计、定制复杂度等。 根据我目前所了解到的信息,使用UV树脂制作私模定制耳塞的价格可能在数百元至数千元不等。具体价格还需根据用户的需求和预算进行综合考虑。 如需获取更准确的报…

微信小程序仿QQ头像轮播效果

1、效果图 2、效果流程分析 1、第1个头像大小从1到0缩小的同时,第2个头像左移 2、上面动画结束后,延迟50ms,第3个头像从0到1放大 3、把头像列表顺序前移一位,并重置轮播状态,以此达到一个循环。然后继续第一个步骤 …

STL——map set

文章将解决一下几个问题: 1.什么是set 2.什么是map 3.set应用场景 4.map应用场景 序列式容器和关联式容器 数据结构有序列式容器和关联式容器,序列式容器一般有vector,list,deque…,但关联式容器中就有map,关联式容器也是用来存…

Java实现知乎热点小时榜爬虫

1.效果演示 1.1 热点问题列表 启动程序后&#xff0c;自动展示热点问题&#xff0c;并等待终端输入 1.2 根据序号选择想看的热点问题 输入问题序号&#xff0c;展示回答内容 1.3 退出 输入q即可退出程序 2.源码 2.1 pom.xml <?xml version"1.0" enco…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:FlowItem)

瀑布流组件的子组件&#xff0c;用来展示瀑布流具体item。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。仅支持作为Waterflow组件的子组件使用。 子组件 支持单个子组件。 接口 FlowItem() 使…

[数据集][目标检测]零售柜零食检测数据集VOC+YOLO格式5422张113类

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5422 标注数量(xml文件个数)&#xff1a;5422 标注数量(txt文件个数)&#xff1a;5422 标注…

html5cssjs代码 018颜色表

html5&css&js代码 018颜色表 一、代码二、效果三、解释 这段代码展示了一个基本的颜色表&#xff0c;方便参考使用&#xff0c;同时也应用了各种样式应用方式。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><title>编程笔记…

Redis开发规范与性能优化(二)

开发规范与性能优化 3.客户端使用 1.【推荐】避免多个应用使用一个Redis示例 正例:不相干的业务拆分&#xff0c;公共数据库做服务化 2.【推荐】使用带有连接池的数据库&#xff0c;可以有效控制链接&#xff0c;同时提高效率&#xff0c;标准使用方式如代码所示 public c…

AMD芯片使用Stable-Diffusion

AMD芯片使用Stable-Diffusion 由于A卡的Stable Diffusion工具的逐步完善&#xff0c;之前只能使用CPU跑&#xff0c;现在已支持AMD显卡进行AI绘图。 下载 官网链接&#xff1a;https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Install-and-Run-on-AMD-GPUs 按…

LAMP网站部署(Discuz论坛网站部署)

目录 mysql命令 语法 选项 参数 实例 安装php 安装Mariadb 关掉防火墙和selinux 启动HTTP服务 初始化数据库 查看数据库是否创建成功 修改HTTP的配置文件 浏览器打开 将以下所有目录都加上权限 最后首页效果 mysql命令 是MySQL数据库服务器的客户端工具&#xff0c;它工作在命…

【Linux下qt软件安装打包附带问题: dpkg: error processing package xxxx +解决方式+自我尝试+记录】

【Linux下qt软件安装打包附带问题&#xff1a; dpkg: error processing package xxxx 解决方式自我尝试记录】 1、前言2、实验环境3、问题说明4、我的努力与查到解决的方式&#xff08;1&#xff09;补充两个文件&#xff0c;让软件正常执行&#xff08;2&#xff09;尝试修复d…

springboot+vue学生选课系统 java+ssm+idea+_mysql

系统包含三种角色&#xff1a;管理员、老师、学生&#xff0c;系统分为前台和后台两大模块&#xff0c;主要功能如下。 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 学生网上选课系统可以实现教室管理&#xff0c;老师管理&#xff0c;课程管理&#xff0c;教学计划管…

为什么我接不到大单?

以前的领导创业多年&#xff0c;今天找我聊了一下想让我跟他一起做点事情&#xff0c;聊了一下我的现状&#xff0c;突然让我明白为何我一直都接不到大单了 说起来也不是完全没有好的机会&#xff0c;貌似有点像“公交车定律”&#xff0c;当我很忙碌的时候订单一个接一个&…

闯关升级游戏特点,闯关小程序游戏开发

闯关升级类游戏一直以来都备受玩家青睐&#xff0c;其独特的游戏性和吸引力让人们乐此不疲。这类游戏以挑战性关卡和角色成长为核心&#xff0c;让玩家在不断的冒险中获得成就感与乐趣。让我们一起深入探讨这类游戏的特点&#xff0c;以及为何它们如此受欢迎。 挑战性关卡设计…

C语言中内存函数的使用

memcpy函数的使用和模拟实现 memcpy的使用 函数使用说明&#xff1a; • 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 • 这个函数在遇到 \0 的时候并不会停下来。 • 如果source和destination有任何的重叠&#xff0c;复制的结…

提升数据分析效率,选择IBM SPSS Statistics专业统计分析软件

在当今信息爆炸的时代&#xff0c;数据已经成为决策的重要依据。对于研究人员、学者、企业管理者等群体来说&#xff0c;如何高效地进行数据分析并得出准确结论至关重要。而IBM SPSS Statistics作为一款专业统计分析软件&#xff0c;为用户提供了强大的工具和功能&#xff0c;助…

【SQL】1084. 销售分析III (多种解法;is null 和 =null 的区别图示 )

前述 知识点学习&#xff1a;MySQL 中 is null 和 null 的区别 题目描述 leetcode题目&#xff1a; 1084. 销售分析III 写法一 思路&#xff1a;“所有售出日期都在这个时间内”&#xff0c;也就是“在这个时间内售出的商品数量等于总商品数量” -- 解法1&#xff1a;ACCE…