登峰造极的UI

尽管现在涌现出了许多各种各样的高级计算机图形(包括动画和 3-D),但我认为,最重 要的永远是使用条形图、饼图和折线构建的传统图表中基本直观的数据表示形式。

虽然数据表可能看起来像是一堆杂乱的随机数字,但图形中隐藏的任何趋势或有趣的信息 比在图表中显示更易于理解。

借助 Windows Presentation Foundation (WPF) 及其基于 Web 的分支 Silverlight,我 们发现了在标记(而不是代码)中定义图形画面的优点。与代码相比,可扩展应用程序标记 语言 (XAML) 更易于更改、体验且易于作为工具使用,从而允许我们以交互方式定义我们的 画面并试用可选方法。

事实上,完全在 XAML 中定义画面非常有利,这样,WPF 编程人员可以将大量时间用于专 门编写代码,从而使 XAML 功能更强大、更灵活。这种现象我称之为“对 XAML 进行编码” ,这也是 WPF 更改应用程序开发方法的几种方式之一。

WPF 中许多功能最强大的技术都包括 ItemsControl,它是通常显示同一类型的项目集合 的基本控件。(ItemsControl 派生的一种常见控件是 ListBox,可通过它进行导航、选择和 显示。)

ItemsControl 可以包含任何类型的对象,甚至是不具有固有的文本或直观表示形式的业 务对象。神奇的组成之处是 DataTemplate(它几乎始终在 XAML 中进行定义),它基于对象 的属性为这些业务对象提供一种直观的表示形式。

在三月的期刊中,我介绍了如何使用 ItemsControl 和 DataTemplate 在 XAML 中定义条 形图和饼图。起初,我曾打算在那篇文章中介绍折线图,但折线图的重要性(和难度)使我 不得不在整个专栏中专门介绍该主题。

折线图问题

折线图实际上是分散曲线的形式 — 在水平轴和垂直轴上各有一个变量的笛卡尔坐标系统 。折线图的一个明显的区别在于图表上水平方向的值通常都是经过分类的。这些值通常是日 期或时间,也就是说,折线图通常显示变量随时间的变化情况。

另一个明显的区别在于单个数据点通过直线连接。虽然从表面上看直线是折线图画面的基 本组成部分,但实际上它是在 XAML 中绘制图表过程中的重大破坏性因素。DataTemplate 介 绍如何在 ItemsControl 中呈现每个项,但是连接这些项要求访问多个点,从理论上讲, PointCollection 随后可与 Polyline 元素结合使用。第一个重要事项是需要生成此 PointCollection,因为对折线图数据执行预处理需要自定义类。

与其他图形相比,折线图更要求多加注意坐标轴。事实上,水平轴和垂直轴本身成为其他 ItemsControl 是有用的!然后,这两个 ItemsControl 的其他 DataTemplate 可完全用于在 XAML 中定义轴刻度线和标签的格式。

总之,首先是具有以下两个属性的数据项集合:这两个属性分别对应于水平轴和垂直轴。 要在 XAML 中绘制图表,您需要从数据中获取特定的项。首先,您需要找到每个数据项对应 的点对象(用于呈现各个数据点)。还需要所有数据项的 PointCollection(连接点的直线 )和两个包含用于在 XAML 中呈现水平轴和垂直轴的充足信息的附加集合,其中包含标签数 据以及用于定位标签和刻度线的偏移量。

很显然,要计算这些 Point 对象和偏移量需要某些信息:图表的宽度和高度以及在水平 轴和垂直轴上制成图表的数据的最大值和最小值。

但这还远远不够。假设垂直轴上的最小值是 127,最大值是 232。在这种情况下,您可能 希望垂直轴实际上从 100 延长到 250,每 25 个单位一个刻度线。或者对于此特定图形,您 可能希望始终包括 0,这样垂直轴可从 0 延长到 250。又或许您希望最大值始终是 100 的 倍数,这样该值便位于 0 到 300 之间。如果这些值的范围为 -125 到 237,或许您希望 0 位于中间,因此该轴的范围可能为 -300 到 300。

可能有许多不同的策略用于确定坐标轴显示哪些值,然后这些策略会控制与各个数据项相 关联的 Point 值的计算。这些策略可能各不相同,因此提供一个“插件”选项以根据需要为 特定图表定义其他坐标轴策略非常有用。

时间: 2024-11-03 17:37:11

登峰造极的UI的相关文章

UI实战指南之留在电脑里的字体(一)

  进阶学习最实用教材!这一由@牛MO王涵 (BigDesign创始人/设计总监)编写的系列文章,从字体选择到提升设计感的技巧等都有涉猎,话题虽广,但全是实战过程中最关键的要素,而且是新手最关心的操作部分,学完直接上手工作 >>> 前言:我来了,这是U1系列新开篇章实战篇,不仅仅是适用于UI设计,甚至包含网页设计.平面设计.在文章中会更多的介绍一些操作上的教学,希望对新人们有帮助. 推荐字体 很多小伙伴在做设计的时候,无论是排版还是展示,都不太注重字体,或者有些太过于注重以至于用了很多种

零基础如何自学UI设计?

  酸梅干超人:下面是我这几年经验的总结和思考,虽然我并不算是最出类拔萃的UI设计师,但也希望对新人有益. 第一点:学习准备--启蒙 学习一项技能,尤其是已经有一定沉淀并在各行各业有广泛应用的技能,就一定要对它先有充分的认知.在开始正式学习前,你需要花足够的经历去了解和查阅它的起源.发展.应用.未来.UI作为平面设计的一部分,再往上又从属与美术学这一大类.因此,首先要先去了解整个美术史的发展.从人类起源各个阶段中,美术经历了什么样的变化,在各自的时代发挥了什么作用,近代美术史又经历了哪些波折,平

20个值得学习的智能手表UI设计案例

  尽管这次的案例中有许多是Apple Watch发售之前的概念设计,但是在UI上还是颇有亮点,足以催化创意,值得借鉴~ Spotify Pulse – Apple Watch UI Instagram Android Wear Concept UI cyclus – smartwatch concept iWatch Concept Smart Watch iOS 7 Facebook Android Wear Concept UI Apple Watch Premier League Mat

11个最好的UI设计

  UI设计可以成就或者毁掉你的网站和应用:怎么做才对呢? 在网页设计中,好的用户界面和UI设计的宗旨在于帮助用户尽可能简单和高效的完成特定任务.虽然视觉和感受也很重要,但是好的UI设计的核心永远是功能:对于导航来说,必须是达到不可见的直观.只要用户会迷路或者不知道去哪儿,这个UI设计就是失败的. 一些例举的网站和应用可能有不同的设计原则和功能,但是它们有一个共同点-高效的UI设计,完美解决上面的问题甚至更加到位.让我们来看看它们是如何做到的. 01.栅格 Grid 应用"栅格"顾名思

outofmemoryexception-VS2013 coded ui test 编码的UI测试 导致程序内存溢出

问题描述 VS2013 coded ui test 编码的UI测试 导致程序内存溢出 我在使用VS coded ui test对一个Winform的程序做自动化测试的时候,每次都在最后抛出OutOfMemoryException的异常,不知道怎么解决. 大家能不能帮忙解决下? 有没有什么方法控制或者监测内存使用情况啊?

小波说雨燕 第三季 构建 swift UI 之 度假清单 学习笔记

最终的效果: <1>第一个场景: 1.本地化 界面简体中文化 Supporting Files - info.plist Localization native development region 本地的编程的地区 选择China,这样的话,用到系统的UI组件,就会变成中文的样式. 2.文本框占位符 属性:Placeholder 另外需要积累的是:Clear Button Appears while editing :当你输入的时候会出现这个(清除)按钮 3.自动布局 添加文本框顶部,左侧和

Android UI设计的幻灯片:新的UI设计模式

文章描述:谷歌Android UI设计技巧:新的UI设计模式. 本系列文章原是Android的官方开发者博客的一份Android UI设计的幻灯片,51CTO的译者将这份教程5部分进行翻译整理,希望对Android开发者能有帮助.本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. 本文为<谷歌Android UI设计技巧>第四部分:新的UI设计模式. [1] [2]  下一页

Win8系统New UI应用管理技巧

  New UI是Win8系统的代表性亮点,它的脱颖而出似乎是一次大的颠覆.New UI的特点就是简洁与直观,没有过分华丽的炫目背景与功能图标,但是通过该界面我们却可以方便的查看实时新闻.邮件.联系人更新等等消息.应用商店当中的应用默认安装在系统盘符中,时间久了应用所占用的空间也就大了.那我们应该如何查看安装在新界面下的应用占用了多少空间呢?其实在Win8系统当中我们可通过自带的设置来查看应用所占用的大小,从而方便我们知道哪些应用是消耗大户. 应用商店中的应用是安装在C:Program File

iOS开发UI篇:APP主流UI框架结构

一.简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果: 开发UI篇:APP主流UI框架结构-"> 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/