该教程介绍了用于配置报表服务器、管理报表服务器内容和操作以及创建与发布报表和报表模型的工具。本教程旨在于帮助新用户了解如何查找和打开各个工具。如果您已经熟悉了这些工具,您可以转到其他教程学习有关使用 Reporting Services 的重要技能。有关其他教程的详细信息,请参阅如何查找教程 (Reporting Services)。
简介
在本主题中,我们首先讨论的是如何使用详细的 SVG 测试图在 SVG 中进行缩放和平移。然后,我们将描述如何使用 Microsoft Excel 和 Microsoft Visio 2010 创建复杂的 SVG 组织 (org) 结构图,该图可由支持 SVG 的浏览器显示。
创建 SVG 测试图
SVG 的一个主要功能是可“无限”放大详图。为了突出显示此功能,我们需要创建一个适合进行缩放和平移的足够详细的 SVG 测试图。在用户放大该图的某个特定功能并希望通过滚动浏览该功能的临近区域时,平移就会变得很重要。
适合进行缩放和平移的可接受的 SVG 测试图可能与下图类似。
testGraphic.html 的屏幕快照
此图形是使用以下示例创建的:HTML5 内联 SVG 测试图形。
注意 对于 Internet Explorer 9,若要查看该示例的标记,请右键单击呈现的页面并单击“查看源”。
来自 HTML5 内联 SVG 测试图形示例的以下(不完整)代码段举例说明了如何创建之前的图形。
This text is going to get extremely small.
The
The
在 HTML5 内联 SVG 测试图形示例中,这个组合的 SVG 图形 (
use 元素创建了引用元素的副本(以及该元素中包含的所有子元素)。
另请注意,SVG text-anchor: middle 样式可轻松将文本居中显示,而 writing-mode: tb 可按垂直方式显示文本。
与最新的 CSS 转换一样,SVG 始终支持相同的概念,包括转换、缩放和旋转。要围绕某个中心点按给定因子缩放图形,可以使用以下伪代码:
transform="translate( -centerX*(factor-1), -centerY*(factor-1) ) scale(factor)"
在此伪代码中,(centerX, centerY) 表示中心点的 (x, y) 坐标,而 factor 是所需的比例因子。
在此示例中,SVG 视区为 800 x 600 像素,视区的中心位于 (400, 300)。要将 parentGraphic 缩小 10%(即比例因子为 0.9),可以使用(在伪代码中):
transform="translate( -400*(0.9-1), -300*(0.9-1) ) scale(0.9)"
这将简化为下面的非伪代码:
transform="translate(40, 30) scale(0.9)"
然后,可将其直接应用于 use 元素来获得所需效果:
此技术用于减少和集中其余 10 个版本的 parentGraphic。
现在,我们将使用这个测试图形来演示如何采用两种方法在 SVG 中进行缩放和平移:基于浏览器和基于脚本。
基于浏览器的 SVG 缩放和平移
对 SVG 图进行缩放和平移的最简单方法是使用浏览器自带的缩放和滚动功能。在 Internet Explorer 9 中,下表描述了与缩放相关的鼠标和键盘快捷方式。
用户操作 键盘快捷键 鼠标快捷键
放大 Ctrl + 加号 Ctrl + <向前滚动滚轮>
缩小 Ctrl + 减号 Ctrl + <向后滚动滚轮>
返回默认缩放级别 Ctrl + 0 不适用
使用浏览器的滚动条可在缩放图中轻松进行平移。
基于 JavaScript 的 SVG 缩放和平移
由于针对缩放和/或平移的用户界面可能随浏览器的不同而不同(或出于其他原因),因此实现你自己的基于 JavaScript 的缩放和平移功能很有用。下面提供了针对这两种情况的示例。
JavaScript 缩放
该示例使用两个按钮和鼠标滚轮啦放大和缩小测试图像:当前比例 SVG 缩放。
尽管通过注释很好地记录了此示例,但仍需注意以下几点:
用于调整测试图大小(或缩放级别)的技术是 svg 元素的 currentScale 特性。
mousewheel 事件已与 window 元素挂接(与 svg 或 body 元素相对),这样一来,无论缩放级别如何,鼠标滚轮在整个网页上都是活动的。
需要 svg 元素的 viewBox 属性以避免与缩放有关的呈现问题(在没有 viewBox 属性的情况下进行尝试即可观察该问题)。
JavaScript 平移
在放大某个特定 SVG 图后,能够移动(平移)图形以查看各种放大功能会很有用。以下示例使用箭头键来平移一个简单的 SVG 图像(蓝色圆圈):SVG 平移。
在此示例中,平移(和下一个示例中的缩放)是通过操作 svg 元素的 viewBox 特性的值来实现的。viewBox 属性的值(一个包含四个数字的字符串)在用户空间中指定了一个矩形,该矩形将映射到视区边界(由 svg 元素建立)。通过使用有助于教学的非标准词汇,可按如下方式描述 viewBox 语法:
viewBox="ULCx ULCy UUwidth UUheight"
注意 ULCx 和 ULCy 分别表示“左上角 x”和“左上角 y”。UUwidth 和 UUheight 分别表示“用户单位宽度”和“用户单位高度”。
通常,会相对于此用户空间/在此用户空间(即用户坐标系统)内绘制 SVG 图形对象。对于利用相对静态图形进行缩放和平移,SVG 图形对象通常决不会在其用户坐标系统内移动;相反,将在 SVG 视区内/相对于 SVG 视区移动用户坐标系统(及其所有“已附带”图形)。因此,从视区的角度来看,已移动图形对象。换言之,通常你可以移动或转换“已附带”图形对象的用户坐标系统,而非图形对象本身。
牢记上述内容,可按如下方式解释 4 个数字(ULCx、ULCy、UUwidth 和 UUheight):
ULCx 和 ULCy - 移动用户坐标系统(在其中绘制图形对象的区域)的原点,这样点 (ULCx, ULCy) 将出现在定义的 SVG 视区的左上角。也就是说,在视区内以可视方式移动用户坐标系统,这样用户坐标点 (ULCx, ULCy) 将出现在 SVG 视区的左上角。这将停止移动(相对于视区而言)用户坐标系统的原点及其所有“已附带”图形对象。
在下面的示例中,用户坐标系统等效于隐式视区坐标系统。
可以通过视区上叠加了用户坐标系统的以下屏幕快照了解这一点。
对齐用户坐标系统和视区坐标系统
在下一个示例中,ULCx 和 ULCy 分别为 -50 和 -25。
这将移动用户坐标系统,这样用户坐标点 (-50, -25) 将显示在视区的左上角。
并置用户坐标系统和视区坐标系统
此操作的结果是将 SVG 图形向下和向右“平移”。如果 UCLx 和 UCLy 都是正数值,则图形将向上和向左移动(剪切图形的一部分)。
UUwidth 和 UUheight - 这两个值可分别确定水平方向和垂直方向上的每个用户单位对应的视区像素数。请考虑以下代码段: