WPF UI介面的革新

article/2025/10/12 21:47:35
透過 Microsoft Windows Vista WPF 的強力行 銷,相信許多讀者對於WPF的UI能力只有驚豔二字可以形容,對於如何使用WPF來達到這些效果,基於雜誌與網路上已有相當多的文章討論,筆者於此就不再重述了,直接將主軸放在WPF的核心,也就是她是如何建構出達到這些效果的環境。WPF強大的UI介面來自於兩個關鍵技術,一是繪製控件的系統,在傳統的Windows程式中,多半是使用Windows內建的控件來建構UI介面,這些控件有ComboBox、TextBox、RichTextBox、Button等等,直接使用這些控件除了可以給予使用者一致的操作介面外,也由於她們是Windows內建的控件,所以效能上也有一定程度的表現,但這樣一來,控件的外觀也受到了限制,對於ComboBox中顯示多欄資料、將TextBox旋轉45度等效果均難以達成,當然!許多熟悉Windows的程序員會提出,要達到這些效果,只要不使用內建的控件,自行建立Window物件,然後繪製所要的外觀即可,是的!這的確是於過往時代達到這些效果的方法之一,但!這實在是太繁瑣了,因為除了外觀外,程序員還得處理相當多的訊息,簡略的說!當想制作一個可旋轉的TextBox時,程序員除了繪制外觀外,還得處理鍵盤、滑鼠等訊息。在WPF時代,這一切都將變得簡單,因為WPF中幾乎所有的控件都是由WPF繪制出來的,這可以使用Spy++工具來觀察Windows Forms與WPF程式來證實(上方是WPF程式,下方是Windows Forms程式)。
這兩個程式的UI介面是相同的,但讀者可以由圖中看出,Windows Forms(下方)的視窗中還擁有button2、button1等子控件,但上方的WPF僅有一個視窗,這就是WPF的Big Handle概念,只使用一個Windows所提供的基礎物件:Window,而這個Window下的所有子控件皆為WPF所畫出並管理,所以Spy++只能看到一個基礎物件Window。因為WPF是畫出控件的,這也意味著要在WPF中將TextBox旋轉是可能的,而事實上!WPF中的控件已經提供了旋轉的能力,即使程序員有需求欲撰寫自訂的控件,也只需繼承自UIElement(WPF中UI控件的基礎類別)即可擁有旋轉的能力。那麼訊息部份該如何處理呢?這就得談到WPF的第二個關鍵技術:自成一格的訊息系統,當使用者於Window上移動滑鼠時,Window會收到來自Windows系統的WM_MOUSEMOVE訊息,接著Window會依據訊息中的X、Y指標資訊,取得對應的UIElement物件來轉送訊息,整個運行的模擬圖如下。
WPF Window 模式下, Dispatcher 負責收取來自 Windows 的訊息,再轉送給各個視窗,也就是 Window HwndSource 物件,此物件會一一呼叫掛載的 InputProvider 物件來處理輸入訊息,此例中掛載了兩個 InputProvider 物件: HwndKeyboardInputProvider 、、 HwndMouseInputProvider ,分別處理鍵盤及滑鼠訊息,以 HwndMouseInputProvider 來說,當收到滑鼠訊息後,她會先計算鼠標位置,找到對應的 UIElement ,然後會呼叫 InputManager 來派送訊息至該 UIElement 。那 Dispatcher 又是由誰喚起的呢?以 Window 模式的 WPF 程式來說,答案是 Application 物件的 Run 函式,她會呼叫 Dispatcher Run 函式,此函式會進入收取訊息的迴圈,直到此程式被關閉為止。
 

http://chatgpt.dhexx.cn/article/yloEYAqk.shtml

相关文章

WPF界面设计—撸大师

WPF界面设计,模仿了金山卫士,360,鲁大师的界面! <!--无边框窗体--><Style x:Key="NoResize_window" TargetType="{x:Type Window}"> <Setter Property="AllowsTransparency" Value="true"/> <Setter Prope…

WPF - 简单的UI框架

实现了一个简单的WPF应用程序UI框架 &#xff0c;分享出来。界面效果图如下&#xff1a; 运行效果如下&#xff1a; 打算持续更新&#xff0c;将左侧面板所有功能模块全给实现了。 喜欢的可以下载源码体验&#xff1a;https://github.com/DuelWithSelf/WPFEffects 左侧分类导览…

WPF真入门教程04--UI布局1

大家都知道&#xff1a;UI是做好一个软件很重要的因素&#xff0c;如果没有一个漂亮的UI&#xff0c;功能做的再好也无法吸引很多用户使用&#xff0c;而且没有漂亮的界面&#xff0c;那么普通用户会感觉这个软件没有多少使用价值。 WPF系统基于流布局的标准&#xff0c;开发人…

WPF UI界面控件篇

WPF UI界面控件篇 布局控件&#xff1a;是任何用户界面的基础&#xff0c;排列应用中的 UI 元素。 文本、按钮和图像等元素都需要规定自己位置和行为方式&#xff0c;构建基块称为“控件”&#xff0c;有时亦称为“元素”。 <Window x:Class"UsingLayoutsApp.Wpf.Mai…

WPF(一) WPF基本控件与布局

​ WPF&#xff08;Windows Presentation Foundation&#xff09;是微软推出的基于Windows的用户界面框架&#xff0c;中文译为“Windows呈现基础”&#xff0c;属于.NET Framework 3.0的一部分。WPF类似于WinForm技术框架&#xff0c;但是相比于WinForm&#xff0c;WPF对大部分…

WPF炫酷界面设计

一.效果展示&#xff08;多层次&#xff09; 二.制作流程 1.在vs2012中建立一个wpf程序 2.建立一个主页面&#xff08;.cs&#xff09;(注&#xff1a;C#程序每一个页面都由两个文件构成一个axml一个cs&#xff0c;一个前端文件一个后台文件) 3.在主页面中添加按钮&#xff0c;…

WPF界面设计工具---Blend学习(一)

文章目录 前言一.初用Blend之喜二.使用Blend1.Blend工具版本 前言 最近在空闲时间学习WPF界面设计工具Blend&#xff0c;之前写WPF的界面都是完全依靠手敲代码的方式&#xff0c;这种方式往往很低效率而且很难做到一些复杂的效果。比如动画&#xff0c;手敲代码实现动画的话&a…

C# WPF 一个设计界面

微信公众号&#xff1a;Dotnet9&#xff0c;网站&#xff1a;Dotnet9&#xff0c;问题或建议&#xff1a;请网站留言&#xff0c; 如果对您有所帮助&#xff1a;欢迎赞赏。 C# WPF 一个设计界面 今天正月初三&#xff0c;大家在家呆着挺好&#xff0c;不要忘了自我充电。 武汉…

WPF界面设计

目录 1.设计一个优美的注册界面1.实现效果2.代码展示 2.简易登录按钮设计1.实现效果2.代码展示 3.设计一个优美的注册登录界面&#xff08;连接数据库&#xff09;1.实现效果2.代码展示 4.设计一个简单的在线教育系统界面1.实现效果2.代码展示 5. 设计一个Dashboard1.实现效果2…

WPF实例系列一:登录、注册界面设计

WPF实例系列一&#xff1a;登录、注册界面设计 文章目录 WPF实例系列一&#xff1a;登录、注册界面设计前言一、实例演示1. 登录界面展示2. 注册界面展示3. 数据存储4. 效果演示 二、结构及源码1.主界面跳转登录界面设计2.登录界面设计3.注册界面设计4.Excel保存数据类设计5.源…

C# WPF界面设计参考 工控机上位机界面 美观炫酷的现代化风格界面设计实际案例分享 界面设计代码

1.动图效果展示 2.界面1 3.界面2 4.界面3 需要界面效果代码的可留言联系博主

WPF界面设计学习

github上发现了一个不错的项目&#xff1a; https://github.com/HenJigg/wpf-uidesign 还配有B站的学习视频&#xff1a; https://space.bilibili.com/32497462 看了这个项目&#xff0c;觉得自己学了这么多年的WPF&#xff0c;界面还设计的这么丑&#xff0c;顿时脸都不知道往…

C# WPF十个美观的界面设计展示

概述 很多时候&#xff0c;我们设计的界面总是感觉缺乏美感&#xff0c;不是我们不会开发好看的界面&#xff0c;而是不知道怎么才算美观&#xff0c;这时候我们不妨看看别人好的页面是怎么做的.下面展示一些我觉得做的比较好的cs界面&#xff0c;希望能给大家在平时做界面设计…

WPF|分享一个登录界面设计

分享一个登录界面&#xff0c;先看效果图&#xff1a; 准备 文中使用到了一些图标&#xff1a; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZsHcZCFv-1652400544809)(https://img1.dotnet9.com/2022/05/3402.png)] 我们可以从 iconfont免费下载…

行列式的意义

本文转自http://www.cnblogs.com/AndyJee/p/3491487.html 三、行列式的几何意义&#xff1a; 行列式的定义&#xff1a; 行列式是由一些数据排列成的方阵经过规定的计算方法而得到的一个数。当然&#xff0c;如果行列式中含有未知数&#xff0c;那么行列式就是一个多项式。它…

矩阵——对称行列式快解

1、先化成爪型行列式 2、再化成上三角或下三角 第一步&#xff1a;把第1行的1倍分别加至第2、3、4行&#xff0c;化为爪型行列式 第二步&#xff1a;把第2、3、4列的&#xff08;-1&#xff09;倍都加到第1列&#xff0c;化为上三角 第三步&#xff1a;得出结果

【线性代数】一、行列式和矩阵

一、行列式 文章目录 一、行列式1.1 行列式性质1.2 余子式行列式按照行列展开的展开公式 一、行列式求解1.用行列式2.用矩阵3.用特征值 1.3 行列式计算一、具体形行列式(1)直接运算1.行\列和相等类型2.爪形、异爪形行列式 (2)化为121个基本行列式1. 主副对角线行列式2. 拉普拉斯…

矩阵/行列式的意义

一、代数意义 矩阵乘法规则看起来比较复杂&#xff0c;不容易理解其乘法规则背后隐含的意义。现举一个例子说明矩阵乘法的意义。如下图所示&#xff0c;一个商店出售Beef pie&#xff0c;chicken pie&#xff0c;vegetable pie&#xff0c;其单价分别为3元&#xff0c;4元&…

矩阵的行列式、秩的意义

线性代数真是一个很抽象的东西&#xff0c;即使我们很多人都学过&#xff0c;但是我相信绝大部分的都不知道这是干嘛用的&#xff0c;找了不少资料&#xff0c;终于发现了这么一篇好文章&#xff0c;于是强烈希望可以和大家分享&#xff0c;帮助大伙进一步理解矩阵的行列式和秩…

线代第二章 矩阵 +行列式与矩阵的区别

行列式与矩阵的区别 一、 行列式是一个数&#xff0c;矩阵是一个表格。 &#xff08;行列式都是n阶的方阵&#xff0c;但矩阵不一定是方阵Ann&#xff0c;也可以是Amn&#xff09; 只有n阶矩阵Ann&#xff1a;才有对应的行列式|A|&#xff0c;才能计算对应行列式的模。 二、…