Silverlight学习(五)图形标绘
Silverlight中进行图形标绘的方法太多了,这里的标绘和Arcgis中的标绘不同,这里大多是静态的标绘。标绘的方法主要有Path(路径标记法)、直接标绘(Line等)、几何标记(LineGeometry等)。
1.路径标记法
路径标记在silverlight中是非常重要的一种标绘方法,通过路径标记,我们可以标绘多种形状的曲线或者直线。下面直接直接上代码。
<Path Stroke="Blue" Data="M 0,0 L 0,0 10,10 20,20 50,50"></Path>
<Path Stroke="Red" Data="M 50,50 H 60 80 150"></Path>
<Path Stroke="Green" Data="M 150,50 V 50 150"></Path> <Path Stroke="GreenYellow" Data="M 100,200 C 100,25 400,350 400,175 H 280" StrokeThickness="3"></Path>
Path
路径标绘一般通过<Path Data=""/>,在Data中是标绘的主要部分,M代表起始点,点的表示形式为(x,y),L表直线,H表示水平线,V表示垂直线,C表示三次方贝塞尔曲线。若图形需要封闭,用Z表示结束。Stroke表示轮廓线的颜色。StrokeThickness是指线段的宽度。
2.图表标绘
silverlight中提供了Line、PolyLine、Polygon、Eclipse、Rectangle等几种标绘类型。
Line,可以在画布中画一条直线,需要制定起点(X1,Y1),终点(X2,Y2),线的颜色和线的宽度等。
PolyLine,是多段线,需要指定它的Points,Points是点的集合。
Polygon,是多边形,同样需要指定Points。
Eclipse是椭圆。。。
Rectangle是矩形。在这里需要讲讲颜色的渐变。silverlight中包含两种渐变方式:LinearGradientBrush和RadialGradientBrush。
LinearGradientBrush是指线性渐变,它可以演化为多种渐变方式,比如水平渐变、垂直渐变、斜线渐变。
<Rectangle Width="200" Height="50" Canvas.Left="100" Canvas.Top="250">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="Yellow" Offset="0.0"></GradientStop>
<GradientStop Color="Red" Offset="0.25"></GradientStop>
<GradientStop Color="Blue" Offset="0.75"></GradientStop>
<GradientStop Color="LimeGreen" Offset="1.0"></GradientStop>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
斜线渐变
斜线渐变也就是设置直线的起点(0,0),终点(1,1)。
<Rectangle Width="200" Height="50" Canvas.Left="50" Canvas.Top="310">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5">
<GradientStop Color="Yellow" Offset="0.0"></GradientStop>
<GradientStop Color="Red" Offset="0.25"></GradientStop>
<GradientStop Color="Blue" Offset="0.75"></GradientStop>
<GradientStop Color="LimeGreen" Offset="1.0"></GradientStop>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
水平渐变
水平渐变设置起点(0,0.5),终点(1,0.5),水平渐变需要保证Y轴的值无变化
<Rectangle Width="200" Height="50" Canvas.Left="300" Canvas.Top="300">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Yellow" Offset="0.0"></GradientStop>
<GradientStop Color="Red" Offset="0.25"></GradientStop>
<GradientStop Color="Blue" Offset="0.75"></GradientStop>
<GradientStop Color="LimeGreen" Offset="1.0"></GradientStop>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
垂直渐变
垂直渐变需要保证的是x轴的值无变化,比如设置起点(0.5,0),终点(0.5,1)。
RadialGradientBrush是径向渐变的方式,它从一个中心点,以圆的方式渐变颜色。
Rectangle Width="50" Height="50" Canvas.Left="150" Canvas.Top="200">
<Rectangle.Fill>
<RadialGradientBrush Center="0.5,0.5" GradientOrigin="0.5,0.5">
<GradientStop Color="Yellow" Offset="0"></GradientStop>
<GradientStop Color="Red" Offset="0.25"></GradientStop>
<GradientStop Color="Blue" Offset="0.75"></GradientStop>
<GradientStop Color="LimeGreen" Offset="1.0"></GradientStop>
</RadialGradientBrush>
</Rectangle.Fill>
</Rectangle>
径向渐变
这里需要设置Centetr 和GradientOrigin,center是中心点,Gradient是径向渐变轴的起点。
3.几何标绘
几何标绘通过LineGeometry、EllipseGeometry、RectangleGeometry等。通过几何标绘,我们可以标绘复杂的图形。这里不做详细说明。
本来是打算结合Blend来写的,但是由于时间太过仓促,没有在blend中实现。只有下次完成了。。
Silverlight学习(五)图形标绘的更多相关文章
- arcgis api for js入门开发系列五地图态势标绘(含源代码)
上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...
- arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- ArcGIS API for Silverlight动态标绘的实现
原文:ArcGIS API for Silverlight动态标绘的实现 1.下载2个dll文件,分别是: ArcGISPlotSilverlightAPI.dll 和 Matrix.dll 其下载地 ...
- 数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇
HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打 ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十)态势标绘模块
config.xml文件的配置如下: <widget label="态势标绘" icon="assets/images/impact_area_over.png&q ...
- HTML5 例子学习 HT 图形组件
HTML5 例子学习 HT 图形组件 HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心 ...
- ArcGIS API for Silverlight学习笔记
ArcGIS API for Silverlight学习笔记(一):为什么要用Silverlight API(转) 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都 ...
- SVG 学习<五> SVG动画
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- ArcGIS For Android 的标绘与可视化
参考 1. CSDN 相关博文 2. ArcGIS for Android 离线数据空间分析--叠加分析 3. ArcGIS for Android Runtime100 基本操作(五)——绘制图层和 ...
随机推荐
- 小谈@override
@override是jdk1.5增加的注解,主要是用来声明子类的某方法覆盖了父类的某方法.非常简单的注解,但是有个小问题: 项目最开始使用的是jdk1.6,mvc模式:接口 ----> 实现类. ...
- SVG 和字符图标
制作网站往往需要使用一些图标来提高用户体验,如果我们的是一些扁平化设计的图标,我们可以选择 SVG 或 图标字体来提高用户体验. 下面对这两种技术进行比较. 开发难度: 现在的在线工具非常强大,比如 ...
- hibernate报错:org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
解决方法:自定义一个Hibernate Dialect. package com.yourcompany.util ; import java.sql.Types; import org.hibern ...
- 在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
1.启用Ad Hoc Distributed Queries 在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务 ...
- C# Cache何时使用及使用方法
Cache 即高速缓存.那么cache是怎么样提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近 期开发的项目中有所体会,写下来当作总结也希 ...
- CodeForces 222D - Olympiad
第一行给出两个个数字k和n,第二三行分别有k个数字,求将第二.三行之间的数字相互组合,求最多有多少个组合的和不小于n 纯粹暴力 #include <iostream> #include & ...
- 如何在Eclipse中查看Android API源码以及support包源码
http://my.eoe.cn/futurexiong/archive/181.html 开发第三方Android应用的,大多数人应该还是Eclipse结合ADT来开发.那么大多数时候我们可能希望点 ...
- php 代码重用
<?php /* 21.php * 代码重用 * include() required()载入文件 * include() 如果载入文件不存在,提示警告,还可以继续执行 * required() ...
- SQL Server SQLOS
SQLOS 抽象出了: 1.任务高度管理子系统. 2.内存管理子系统. 3.错误,异常处理机制. 4.死锁侦测各解决机制. 5.运行第三方代码. 好处: 1.减少线种的上下文切换.空闲连接不占用线程.
- python学习day12
目录 html结构与标签 css样式 html结构之head <head> 标签用于定义文档的头部,它是所有头部元素的容器.<head> 中的元素可以引用脚本.指示浏览器在 ...