先看一下效果

这是我的Music Tags App里面的效果图,当然你也可以做的比我的更炫。

其实这个效果的实现来自于控件UWP Community Toolkit的OrbitView,所以大家要多看看这个啊,里面大量好用的控件,只是UWP这情况,所以大家都没什么兴趣了。

不过不管需不需要,了解一下还是有好处的。

下面先看一下我的Xaml代码

<controls:OrbitView x:Name="orbitView"
AnchorColor="Gray"
AnchorsEnabled="False"
Background="Transparent"
IsItemClickEnabled="True"
MinItemSize="50"
MaxItemSize="100"
OrbitColor="LightGray"
OrbitsEnabled="True"
ItemClick="orbitView_ItemClick">
<controls:OrbitView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<!-- Have this space to keep image centered on line -->
<!--<RowDefinition Height="2*"/>
<RowDefinition Height="*"/>-->
</Grid.RowDefinitions>
<controls:DropShadowPanel x:Name="DropShadowPanel"
HorizontalContentAlignment="Stretch"
HorizontalAlignment="Center"
VerticalContentAlignment="Stretch"
BlurRadius="20"
Color="Black"
Grid.Row="1">
<Ellipse Stretch="Uniform" VerticalAlignment="Stretch" HorizontalAlignment="Center"
Width="{Binding ActualHeight, ElementName=DropShadowPanel}">
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding Image}" />
</Ellipse.Fill>
</Ellipse>
</controls:DropShadowPanel>
</Grid>
</DataTemplate>
</controls:OrbitView.ItemTemplate> <controls:OrbitView.CenterContent>
<Grid>
<controls:DropShadowPanel BlurRadius="20">
<Ellipse Width="105"
Height="105"
Fill="{ThemeResource SystemControlForegroundAccentBrush}"
Stroke="Black"
StrokeThickness="0" />
</controls:DropShadowPanel>
<Ellipse Width="100"
Height="100"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Ellipse.Fill>
<ImageBrush ImageSource="ms-appx:///Assets/Square44x44Logo.scale-400.png"/>
</Ellipse.Fill>
</Ellipse>
</Grid>
</controls:OrbitView.CenterContent>
</controls:OrbitView>

同其他控件一样,轨道视图的模板也是可以自定义的,在 OrbitView.ItemTemplate 里面

而在 OrbitView.CenterContent ,可以定义中心的图标,就是:

后台cs代码:

try
{
double[] arr1 = { 0.1, 0.4, 0.3, 0.15, 0.45, 0.2, 0.5 };
double[] arr2 = { 0.1, 0.4, 0.3, 0.45, 0.8, 0.15, 0.7, 0.2, 0.9, 0.5, 0.6, 0.1, 0.6, 0.4, 0.5, 0.8, 0.3, 0.9, 0.1, 0.5 };
for (int i = ; i <= (Application.Current as App).MusicItems.Count - ; i++)
{
ID3Tag item = (Application.Current as App).MusicItems[i];
BitmapImage bi = new BitmapImage();
bi = (BitmapImage)item.Cover;
OrbitViewDataItem ooo = new OrbitViewDataItem
{
Diameter = arr1[i % ],
Distance = arr2[i % ],
Image = item.Cover,
Label = item.Title,
}; ovcOrbit.Add(ooo);
}
orbitView.ItemsSource = ovcOrbit;
}
catch { }

很简单,指定每一个  OrbitViewDataItem  的半径,距离中心的距离,图片,标签即可。

我的情况是,涉及到的个数多,所以在一个轨道上可能有多个Item,用了预先设定好的数组。

自己用的时候要根据实际情况定。

UWP 轨道视图Orbit View的更多相关文章

  1. UWP 卡片视图 Card View

    上一篇 提到了 UWP 轨道视图Orbit View,这次就说一下卡片视图,毕竟两个差不多. 卡片视图,效果如其名,卡片一样,左右滑动,当然能翻牌最好了. 嗯,我这个可以的额(⊙﹏⊙)... 看下效果 ...

  2. 1.Android 视图及View绘制分析笔记之setContentView

    自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常 ...

  3. ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)

    在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...

  4. 视图(View)与部分视图(Partial View)之间数据传递

    写ASP.NET MVC程序,我们经常需要把数据从视图(View)传递至部分视图(Partial View) 或者相反. 今天Insus.NET使用 ControllerBase.TempData 进 ...

  5. 截取视图某一段另存为部分视图(Partial View)

    在做ASP.NET MVC后台管理程序时,根据程序需要,Isus.NET需要实现一个功能,就是动态截取视图某一段另存为部分视图Partial View. 思路为在视图中,使用jQury的程序截图以及P ...

  6. iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)

    我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已.当然如果需要我也会使用 ...

  7. 验证编辑方法(Edit method)和编辑视图(Edit view)

    ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是 ...

  8. SAP HANA中创建计算视图(Calculation View)

    [Step By Step]SAP HANA中创建计算视图(Calculation View) Demo Instruction: 该视图将两个表AUDIOBOOKS和BOOKS中的数据进行连接,并作 ...

  9. Oracle视图 create View

    视图是一种虚表,使用CREATE VIEW语句来定义视图,该视图是基于一个或多个表或视图的逻辑表.一个视图本身不包含任何数据, 视图所基于的表称为基表. 视图就相当于一条select 语句,定义了一个 ...

随机推荐

  1. blank site teamplate去了哪里?

    在sharepoint 2010包括sharepoint2010以前,有一个模板是blank site template.到了sharepoint2013,突然发现没有了. 再也不能生成基于blank ...

  2. Ajax请求:本地跨域的问题

    问题出现一: 1.Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-e ...

  3. Language-Directed Hardware Design for Network Performance Monitoring——Marple

    网络监控困难 1.仅仅通过去增加特定的监控功能到交换机是不能满足运营商不断变化的需求的.(交换机需要支持网络性能问题的表达语言) 2.他们缺乏对网络深处的性能问题进行本地化的可见性,间接推断网络问题的 ...

  4. 【原创】python __all__ 的用法

    1.  写自己的module或者package的时候需要控制向外暴露的名字, 这个很有用, 防止名字污染

  5. 常见dos命令(win7下测试)

    按下组合键:win + R ,输入cmd进入Dos. 1.  cls :清屏命令. 2.  ver :查看系统版本号命令,winver弹出一个窗口显示更详细的系统版本号. 3.  dir  无参数 : ...

  6. myFocus 焦点图/轮播插件

    最近产品突然就来个需求,要加轮播图,而且是立马要上线,于是乎发现了一个超级简便好用的轮播图插件myFocus,而且myFocus提供很多种风格,可以选择. 这里是使用说明 http://www.chh ...

  7. 1818: [Cqoi2010]内部白点

    Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1394 Solved: 625 [Submit][Status][Discuss] Descriptio ...

  8. jQuery内容横向拖拽滚动

    如果有业务需求:使用横向滚动,而又不想用滚动条,可以使用横向拖拽滚动,主要是利用元素的scrollLeft特性: 废话不多说直接上代码: css: .box{ width:100%; height:3 ...

  9. centos 系统安装基本步骤,面试必考

    1.调整开机媒体,通常为cd或者dvd,也可以是u盘. 2.选择安装模式,是否需要图形化 3.语系及键盘语系选择 4.软件选择 5.磁盘分区操作,主+扩展分区最多4个.逻辑分区在扩展分区下建立 6.时 ...

  10. ddt 接口示范以及报告生成html案例

    1.数据构造获取我就不写了直接以test_data=[  ] 构造一个简单数据建模.实际你从哪里获取根据情况excel也好yaml也罢 2.用例套件处理,报告生成处理 import ddtimport ...