Silverlight 基本形状和画图概述

MATLAB实战:5步搞定GNSS单点定位解算(附完整代码) 本文提供了一份基于MATLAB的GNSS单点定位实战指南。通过5个核心步骤,详细讲解了如何从卫星坐标伪距观测值出发,利用最小二乘迭代算法,构建并实现一个完整的单点定位解算器。文章附有完整代码,并涵盖精度评估与结果分析,适合GNSS初学者MATLAB用户快速上手实践。 阅读详情
 

Silverlight 基本形状和画图概述

本主题概述如何使用 Shape 对象进行画图。Shape 是一种 UIElement 类型,允许你在屏幕上画出基本图形。由于是 UI 元素, Shape 对象可以在 Canvas 元素中使用。

 

本主题包含以下小节:

Shape 对象

Silverlight 提供了很多现成的 Shape 对象可以使用。可以使用的 Shape 对象包括 EllipseLinePathPolygonPolylineRectangleShape 对象共同拥有下面的属性:

  • Stroke: 描述基本形状的轮廓如何绘制。

  • StrokeThickness: 描述基本形状轮廓的厚度。

  • Fill: 描述基本形状的内部如何绘制。

  • 设置坐标和顶点的数据属性是以 设备无关的像素为单位的。

Shape 对象可以在 Canvas 对象中使用,Canvas通过设置 Canvas.LeftCanvas.Top 附加属性支持子对象的绝对定位。

Line 类允许你在 2 点之间画直线,下面的例子显示了指定线段坐标和边框(stroke)属性的多种方法。

 

XAML
<Canvas 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">

<!-- Draws a diagonal line from (10,10) to (50,50). -->
<Line
X1="10" Y1="10"
X2="50" Y2="50"
Stroke="Black"
StrokeThickness="4" />

<!-- Draws a diagonal line from (10,10) to (50,50)
and moves it 100 pixels to the right. -->
<Line
X1="10" Y1="10"
X2="50" Y2="50"
StrokeThickness="4"
Canvas.Left="100">
<Line.Stroke>
<RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5" RadiusX="0.5" RadiusY="0.5">
<RadialGradientBrush.GradientStops>
<GradientStop Color="Red" Offset="0" />
<GradientStop Color="Blue" Offset="0.25" />
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Line.Stroke>
</Line>

<!-- Draws a horizontal line from (10,60) to (150,60). -->
<Line
X1="10" Y1="60"
X2="150" Y2="60"
Stroke="Black"
StrokeThickness="4"/>

</Canvas>

尽管 Line 类提供了 Fill 属性,由于 Line 没有任何区域,所以,设置它是没有任何效果发。

另外一个基本形状是 Ellipse。通过设置图形的 WidthHeightEllipse 属性创建 Ellipse。要画一个圆,将 EllipseWidthHeight 属性值设置为相等即可。

XAML
<Canvas   
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Ellipse
Fill="Yellow"
Height="100"
Width="200"
StrokeThickness="2"
Stroke="Black"/>
</Canvas>

使用路径和几何体

Path 类允许你画曲线和复杂形状。这些曲线和形状使用 Geometry 对象来描述。要使用 Path,你先创建一个 Geometry,然后设置 Path 对象的 Data 属性。有多种 Geometry 对象可供选择。 LineGeometryRectangleGeometryEllipseGeometry 类描述了相对简单的形状。要创建更加复杂的形状或者创建曲线,请使用 PathGeometry。创建 PathGeometry 对象的信息,请参见 Silverlight 几何图形概述

XAML 简写语法

在 Extensible Application Markup Language (XAML) 中,你也可以使用特殊的简写语法描述 Path。下面的例子使用简写的语法画出复杂的形状。

XAML
<Canvas 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<Path Stroke="DarkGoldenRod" StrokeThickness="3"
Data="M 100,200 C 100,25 400,350 400,175 H 280" />
</Canvas>

下图显示了上面例子中 Path 的结果。

Path illustration

Data 属性字符串以“move to”命令(使用 M 标记)开始,以 Canvas 坐标系统为路径建立起始点。Path 的 Data 参数是大小写敏感的。大写的 M 表示当前点的绝对坐标。小写的 m 表示的相对坐标。第一部分是三次 Bezier curve(贝塞尔曲线),以点(100,200)开始,(400,175)结束,使用两个控制点(100,25) 和 (400,350)绘制而成。这部分使用 C 命令,再次说明,大写的 C 表示绝对路径,小写的 c 表示相对路径。

第二段以绝对的水平线“line to”命令 H 指定从前面子路径的终点(400,175)到新的终点(280,175)之间画一条线。由于它是画水平线的“line to”命令,指定的值是 x 坐标。

有关路径语法的完整信息,请参见 Data 参考和 Path(路径)标记语法

绘制基本图形

你可以使用 Brush 对象来划出一个基本形状的 Stroke(边框)Fill(填充)。在下面的例子中, 指定 Ellipse 的边框和填充。请注意,画刷属性的有效值只能是关键字名或者是 16 进制的颜色值。

XAML
<Canvas 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="300" Height="300"

Background="LightGray">
<Ellipse
Canvas.Top="50"
Canvas.Left="50"
Fill="#FFFFFF00"
Height="75"
Width="75"
StrokeThickness="5"
Stroke="#FF0000FF"/>
</Canvas>

下图显示了展现的 Ellipse

另外一种方法是,你可以使用属性元素语法明确创建一个 SolidColorBrush 对象来画出纯色的基本形状。

XAML
<Canvas
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- This polygon shape uses pre-defined color values for its Stroke and
Fill properties.
The SolidColorBrush's Opacity property affects the fill color in
this case by making it slightly transparent (opacity of 0.4) so
that it blends with any underlying color. -->

<Polygon
Points="300,200 400,125 400,275 300,200"
Stroke="Purple"
StrokeThickness="2">
<Polygon.Fill>
<SolidColorBrush Color="Blue" Opacity="0.4"/>
</Polygon.Fill>
</Polygon>

</Canvas>

下图显示了呈现的基本形状。

SolidColorBrush illustration

你还可以画带渐变、图像、模式等的基本形状的边框和填充。更多信息,请参见 Silverlight 画刷概述

变换形状

Transform 对象允许你在 2 维平面里变换图形。变换的种类包括旋转(RotateTransform)、缩放(ScaleTransform)、 倾斜(SkewTransform)和平移(TranslateTransform)。

对图形常用的变换是旋转。要旋转图形,创建一个 RotateTransform,然后指定他的 AngleAngle 设置为 45 代表顺时针旋转元素 45 度;Angle 的值设置为 90,表示顺时针旋转 90 度,依次类推。如果你想要控制元素沿什么点旋转,请设置 CenterXCenterY 属性。这些属性值以被旋转元素的坐标空间表示。CenterXCenterY 的默认值都是 0,最后设置图形的 RenderTransform 属性对元素应用 RotateTransform

下面的例子中,采用 RotateTransform 对图形沿左上角(0,0)旋转 45 度。

XAML
<Canvas 
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<!-- Rotates the Polyline 45 degrees about the point (0,0). -->
<Polyline Points="25,25 0,50 25,75 50,50 25,25 25,0"
Stroke="Blue" StrokeThickness="10"
Canvas.Left="75" Canvas.Top="50">
<Polyline.RenderTransform>
<RotateTransform CenterX="0" CenterY="0" Angle="45" />
</Polyline.RenderTransform>
</Polyline>
</Canvas>

要对图形(或者任何其他的 UI 元素)应用多个变换,请使用 TransformGroup

有关变换对象和其他例子,请参见 Silverlight 变换概述

26、探索Silverlight中的图形与几何形状 本文详细介绍了Silverlight中的2D图形与几何形状绘制技术,包括基本形状如矩形、椭圆、线条路径的使用,以及高级功能如形状变换、交互性性能优化策略。通过具体示例展示了如何利用Silverlight强大的绘图能力创建灵活且高性能的图形界面。 阅读详情

相关推荐

31、形状与变换:Silverlight中的图形处理技巧

本文深入介绍了 Silverlight 中的图形处理技巧,包括几何命令、裁剪、各种变换类型(如旋转、缩放、倾斜等)及其应用场景,还详细讲解了反射效果、透视变换以及动画的实现方法。通过合理运用这些技术,可以创建丰富多样的用户界面动态视觉效果。

rust6ferris的博客 42

silverlight 改变鼠标指针形状

Silverlight中改变鼠标的形状是怎么样的呢?就是改变Xaml中控件的 Cursor="Hand" 其余的形状还包括: Arrow  Eraser  Hand  IBeam  SizeNS  SizeWE  Stylus  Wait        Canvas >            Button Cursor="Hand"   Width="100" Height="50

Bychentufeiyang的专栏 3037

27、深入探索Silverlight XAML与JavaScript编程

本文深入探讨了Silverlight中XAML与JavaScript的编程技巧,涵盖了VideoBrush的使用、形状绘制、控件操作、变换与动画实现以及JavaScript的交互编程,帮助开发者创建丰富且交互性强的用户界面。

spice的博客 82

SilverLight中的几何形状

原来说过,几何形状只是对形状的数学描述。用来描述图形时,需要放到Path的Data属性中。但Path不需要这些形状描述,直接使用字符串的图形描述语法也可以描述出各种图形。那还需要几何形状干嘛吗? 其实,几何形状最主要的用处就是裁剪,可以把显示元素显示成各种各样的形状。几何形状

hgjsoft空间 590

Silverlight 视频刷概述 VideoBrush

Silverlight 视频刷概述 Silverlight 视频刷(VideoBrush) 用视频画出一个区域。本主题描述如何使用视频刷画出视频填充的基本形状文字。同时通过例子说明如何交互控制 视频刷 。 本主题包含以下小节: 先决条件 演练:使用视频画文字块 视频刷属性 视频刷媒体元素(MediaElement)之间的...

weixin_30446197的博客 190

Silverlight 对象的定位

  本部分讲述如何在 icrosoft Silverlight 应用中控制对象(如形状、文字媒体)的位置。 本部分包含下面的小节内容:Canvas 对象 定位路径、几何对象其它形状 变换 Z-OrderCanvas 对象所有的 Silverlight 对象必须包含在 Canvas 对象之内,并相对于包含它的 Canvas 进行定位。 你可

IcyCoffee 1338

一步一步学Silverlight 2系列(26):基本图形

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息本声明。否则将追究法律责任。http://terrylee.blog.51cto.com/342737/67276 ...

weixin_34250434的博客 338

入门5-Silverlight中如何进行图片处理

下面介绍一下ImageImageBrush元素对象:在Silverlight中通过使用Image对象ImageBrush图片笔刷两种方式来显示图片,图片的格式目前只支持PNGJPG两种,所以其他格式的图片格式,例如gif,bmp需要先转换成PNG或JPG,方可在在Silverlight中使用。先介绍Image,Image用法如下:Width,Height类型为System.Double,

mentgmery1的专栏 3064

Silverlight学习笔记--SilverLight中的基本图形

SilverLight中的基本图形

刘军的专栏 840

精通Silverlight——目录

第一篇  Silverlight入门与开发环境第1章  Silverlight基础1.1  Silverlight概述1.1.1  Silverlight是什么1.1.1  Silverlight能做什么1.1.3  跨平台的用户体验1.1.4  可扩展的编程模型协作工具1.1.5  高质量、低成本的多媒体技术1.1.6  结合数据、服务器服务1.2 

Silverlight 2296

Silverlight开发历程—(绘制矢量图之Line)

形状绘图 形状(shape)在Silverlight是一个2D绘图类,它位于System.Windows.Shapes这个命名空间内。我们可以把Shape理解为所有Silverlight形状元素的一个集合,包括矩形(Rectangle)、椭圆(Ellispe)、线条(Line)、多段线(PolyLine)多边形(Polyon). 一、线条元素 线条(Line)是Sha...

174

Silverlight形状、画笔、变换、图像处理、几何图形

1.形状(Ellipse、Line、Path、Polygon、Polyline Rectangle) 1 <UserControl x:Class="SharpStudy.MainPage" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http...

weixin_33856370的博客 116

Silverlight学习之RenderTransform特效(五种基本变换)及(矩阵变换MatrixTransform)

RenderTransform特效:   变形(RenderTransform)类是为了达到直接去改变某个Silverlight对象的形状(比如缩放、旋转一个元素)的目的而设计的,RenderTransform包含的变形属性成员就是专门用来改变Silverlight对象形状的,它可以实现对元素拉伸,旋转,扭曲等效果,同时变形特效也常用于辅助产生各种动画效果,下面列出RenderTransfo

ghevinn欢迎您光临 1489

Silverlight Demo(转帖)

 What a beautiful, though distracting, flash website! Lets do it in Silverlight!  This weekend I came across this flash website, in my own personal opinion I thought this site was awesome. It

破剑冰 4196

Silverlight开发历程—(Clip裁剪特效)

Clip裁剪特效 裁剪特效(Clip),允许对Silverlight元素进行裁剪,裁剪形状由Clip属性内包含的Geometry决定,下面直接上代码: <StackPanel x:Name="LayoutRoot" Orientation="Horizontal" Background="White"> <!--原图--> ...

120

如何用silverlight 做用于图片展示的画廊(二):建立矩形、椭圆、异形图片框

本文是在如何用silverlight 做用于图片展示的画廊(一)的基础上进行的功能增强,增加了对相片的边框形状处理的功能,能否将图片剪切成矩形(可以带异角)、椭图及随意定义剪形状的功能,附源代码的例子中就有笔者将照片剪切成SL2(silverlight 2) 形状的例子。如果你觉得本教程有一定用处,你可以通过以下代码加到你的Blog中 http://www.douziwang.cn/ind

egoZd的专栏 1024

UI调试平台Web UI自动化项目框架设计

该项目是一个UI自动化框架的封装平台,主要基于Python+PlayWright搭建了接口自动化框架,实现注册,登录,新增项目,新增环境等功能用例转自动化的实现,并且合理使用断言,生成可视化的测试报告

2301_80424145的博客 326

在 SAP BTP 中玩转工厂日历 Maintain Factory Calendars 实战指南

工厂日历是企业关键的时间主数据,基于国家假日历定义工作日与非工作日,广泛应用于生产计划、采购交期、财务结账等业务场景。SAP系统通过三类应用(维护节假日、假日历工厂日历)实现分层配置。工厂日历作为顶层配置,支持工作日模式设定例外规则添加。在多系统架构中,工厂日历可通过集成场景同步,确保数据一致性。应用支持创建、编辑查看功能,包含有效期设置、例外规则管理多语言文本维护。合理设置工厂日历对业务运营至关重要,需注意命名规范有效期选择,避免历史数据问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 170

半导体全制程介绍.doc

半导体全制程介绍.doc

上一篇: How to export only visible colm. in GridPanel
下一篇: Path(路径)标记语法
fengart
博客等级 码龄20年 91粉丝 45原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值