【译】Fuse入门(四)

*** 上接入门(三),本节还是属于UI组件一章,讲的是视频和图形标记。***
官网链接:https://www.fusetools.com/learn/fuse#video

视频 Video

显示一个视频:

<Video File="fuse_video.mp4" />

Video 标记通过File属性指定一个视频文件,通过Url属性指定视频流,用起来和Image标记差不多,当然也有StretchModeStretchDirectionContentAlignment这些属性,都是一样的用法。

视频属性

除了和Image同样的属性外,Video标记还有自己的一套配置和控制属性,如下所示:

Volume - 范围从0.01.0,缺省为1.0
Duration - 以秒为单位的视频时长
Position - 视频播放到的位置,精确到秒。
Islooping - 布尔值,指定该视频是否循环播放,缺省为false

视频相关的触发器(Triggers)

<Video>
    <WhilePlaying />    <!-- Active while the video is playing -->
    <WhilePaused />     <!-- Active while the video is paused -->
    <WhileCompleted />  <!-- Active while the video is done playing -->
    <WhileLoading />    <!-- Active while the video is loading -->
    <WhileFailed />     <!-- Active if the video failed to load or an error occured -->
</Video>

控制视频的相关动作(Actions)

Fuse有现成的一套控制视频的“Actions”,它们都有共同的Target属性指向所要控制的视频元素。

<Pause />      <!-- Pauses playback, leaving the current position as-is -->
<Stop />       <!-- Stops playback and returns to the beginning of the video -->
<Resume />     <!-- Resumes playback from the current position -->

支持格式

视频的播放需要视频解码器,是由App输出到的目标平台所提供的。需要注意的是,windows、OS X、安卓和iOS不一定支持同种格式。

视频示例

<App Theme="Basic">
    <DockPanel>
        <Video ux:Name="video" Dock="Fill" File="fuse_video.mp4" IsLooping="true" StretchMode="UniformToFill">
            <ProgressAnimation>
                <Change progressBar.Width="100" />
            </ProgressAnimation>
        </Video>
        <Rectangle ux:Name="progressBar" Dock="Bottom" Fill="#f00" Width="0%" Height="10" />
        <Grid Dock="Bottom" ColumnCount="2" RowCount="1">
            <Button Text="Play">
                <Clicked>
                    <Resume Target="video" />
                </Clicked>
            </Button>
            <Button>
                <Clicked>
                    <Pause Target="video" />
                </Clicked>
            </Button>
        </Grid>
    </DockPanel>
</App>

图形 Shapes

Fuse可以渲染矩形和圆形,这些图形可有多重填充和描边,而且可以层叠在一起。

矩形 Rectangle

这样画个矩形:

<Rectangle Fill="#f00" />

上面的例子里, Rectangle会最大化地占用父元素可用的空间,画上纯红色的矩形。

如果你想限制矩形的宽高,可以用WidthHeight属性。

<Rectangle Fill="#f00" Width="50" Height="50" CornerRadius="5" />

上例就是显示一个50 X 50 点的圆角红色矩形,注意是“点”,不是“像素”,这样可以在大多数设备上显示成一样的大小,而不用理会各设备不同的像素密度和屏幕大小。

圆形 Circle

画个圆很简单:

<Circle Fill="#f00" Width="50" Height="50">
    <Stroke Width="5" Brush="#ff0" />
</Circle>

上面的例子,我们不但画了一个圆,还给它加了黄色的描边。

起始角/终止角 StartAngle/EndAngle

StartAngleEndAngle是用来画一个圆的扇形的,它们有6种用不同方式来控制扇形的属性。

  • StartAngle - 扇形顺时针开始边与X轴的弧度
  • EndAngle - 扇形顺时针结束边与X轴的弧度
  • StartAngleDegrees - 起始角度数
  • EndAngleDegrees - 终止角度数
  • LengthAngle - 从起始角开始的位移弧度,有些情况可以用开代替EndAngle
  • LengthAngleDegrees - 位移角度数,代替EndAngleDegrees

在同一个圆形同时使用StartAngleStartAngleDegrees(同时用了弧度和角度),会发生"undefined"的情况。

填充 Fills

和上面一样,先来个简单使用填充Fill属性的例子:

<Rectangle Fill="#f00" />

然后看看其他种类型的填充,如:

<StackPanel>
    <Circle Width="150" Height="150">
        <ImageFill File="Pictures/Picture1.jpg" />
    </Circle>
    <Rectangle Height="150">
        <LinearGradient StartPoint="0,0" EndPoint="1,0.75">
            <GradientStop Offset="0" Color="#FC3C47" />
            <GradientStop Offset="1" Color="#B73070" />
        </LinearGradient>
    </Rectangle>
</StackPanel>

上例中,我们先用图片当笔刷填充了一个圆形,在社交类App里是常见好效果的用户头像图标的形式,然后又画了一个漂亮矩形,填充是谈谈的渐变色。

描边 Strokes

和上面的填充一样,描边也可以用笔刷, 如下所示:

<StackPanel>
    <Circle Width="150" Height="150">
        <Stroke Width="10">
            <ImageFill File="Pictures/Picture1.jpg" />
        </Stroke>
    </Circle>
    <Rectangle Height="150">
        <Stroke Width="15">
            <LinearGradient StartPoint="0,0" EndPoint="1,0.75">
                <GradientStop Offset="0" Color="#FC3C47" />
                <GradientStop Offset="1" Color="#B73070" />
            </LinearGradient>
        </Stroke>
    </Rectangle>
</StackPanel>

当然用Brush属性指定一个纯色的描边也没问题:

<Rectangle Fill="#f00" Width="50" Height="50">
    <Stroke Width="5" Brush="#ff0" />
</Rectangle>
描边的位置 StrokeAlignment

描边也有Alignment属性,就是描边相对图形的位置。

<Stroke StrokeAlignment="Center" />

StrokeAlignment的有效值为CenterInsideOutside。(居中、内置、外置)

Stroke.Offset 描边的位移

一个图形的描边可以设定位移值:

<Stroke Width="10" Offset="10">
    <ImageFill File="Pictures/Picture1.jpg" />
</Stroke>

“正位移”是使描边在图形外位移,“负位移”则是使描边在图形内位移。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容

  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,663评论 2 32
  • 18- UIBezierPath官方API中文翻译(待校对) ----------------- 华丽的分割线 -...
    醉卧栏杆听雨声阅读 1,048评论 1 1
  • UIBezierPath Class Reference 译:UIBezierPath类封装了Core Graph...
    鋼鉄侠阅读 1,706评论 0 3
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    Looog阅读 3,936评论 3 40
  • Quartz2D以及drawRect的重绘机制字数1487 阅读21 评论1 喜欢1一、什么是Quartz2D Q...
    PurpleWind阅读 760评论 0 3