UWP 轨道视图Orbit View
先看一下效果吧

这是我的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的更多相关文章
- UWP 卡片视图 Card View
上一篇 提到了 UWP 轨道视图Orbit View,这次就说一下卡片视图,毕竟两个差不多. 卡片视图,效果如其名,卡片一样,左右滑动,当然能翻牌最好了. 嗯,我这个可以的额(⊙﹏⊙)... 看下效果 ...
- 1.Android 视图及View绘制分析笔记之setContentView
自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常 ...
- ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view)
在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie ...
- 视图(View)与部分视图(Partial View)之间数据传递
写ASP.NET MVC程序,我们经常需要把数据从视图(View)传递至部分视图(Partial View) 或者相反. 今天Insus.NET使用 ControllerBase.TempData 进 ...
- 截取视图某一段另存为部分视图(Partial View)
在做ASP.NET MVC后台管理程序时,根据程序需要,Isus.NET需要实现一个功能,就是动态截取视图某一段另存为部分视图Partial View. 思路为在视图中,使用jQury的程序截图以及P ...
- iphone绘图的几个基本概念CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)
我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已.当然如果需要我也会使用 ...
- 验证编辑方法(Edit method)和编辑视图(Edit view)
ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是 ...
- SAP HANA中创建计算视图(Calculation View)
[Step By Step]SAP HANA中创建计算视图(Calculation View) Demo Instruction: 该视图将两个表AUDIOBOOKS和BOOKS中的数据进行连接,并作 ...
- Oracle视图 create View
视图是一种虚表,使用CREATE VIEW语句来定义视图,该视图是基于一个或多个表或视图的逻辑表.一个视图本身不包含任何数据, 视图所基于的表称为基表. 视图就相当于一条select 语句,定义了一个 ...
随机推荐
- JS DateTime 格式化
首先看我们在浏览器接收到的DateTime格式的数据: 如果没有在传输的时候把DateTime转成字符串的话,我们只需要在JS中加一段代码即可转换,代码如下: function ChangeDateF ...
- SharePoint 2007——内容管理之归档篇
如果需要使用这个功能普通的站点上(没有使用Record Center站点模板的站点),必须激活'Office SharePoint Server Publishing’ featue. 在使用Rec ...
- Civil War
Civil War 编辑 <Civil War>是美国硬摇滚乐队枪炮与玫瑰的一首单曲,首次收录于1990年的群星慈善专辑<Nobody's Child: Romanian Angel ...
- [转] JavaScript生成GUID的算法
原文地址: http://www.cnblogs.com/snandy/p/3261754.html 全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID( ...
- iis和apache共用80端口,IIS代理转发apache
为什么共用80端口应该不用多说了,服务器上程序运行环境有很多套,都想抢用80端口,所以就有了共用80端口的解决方案. 网上很多的教程一般都是设置APACHE使用默认80端口,代理转发IIS的网站,II ...
- Hibernate入门步骤及概念
1.什么是Hibernate Hibernate是一个开发源代码的对象关系映射框架,它对JDBC进行非常轻量级的对象封装,使得程序员可以随心所欲地使用对象编程思维来操纵数据库.Hibernate可以应 ...
- 页面中图片以背景图形式展示好还是以img标签形式展示
img和background-image的异同: img是网页结构层面上的标签,页面中多一个img标签就会多一次http请求,且当我们浏览页面时,img标签作为网页结构的一部分,会在浏览器加载结构的过 ...
- 类型构造器-Functor[F[_]]
类型构造是抽象类型或高阶类型实例化的过程: 类型构造器是任意输入一个或几个已有类型,能够生成新类型的类型: https://www.cnblogs.com/feng9exe/p/9925027.htm ...
- Python全栈开发:list 、tuple以及dict的总结
总结: 列表:增:append(),inset(),extend() 删:pop(),remove(),clear(),del 改:a.通过指定元素和切片重新赋值.b.可以使用repelace替换列表 ...
- [luogu1600] 天天爱跑步
题面 直接写正解吧, 不想再写部分分了, 对于\(u\)和\(v\), 我们可以将它拆成两条路径, \(u\)到\(lca(u, v)\)和\(lca(u, v)\)到v, 在这里只分析从\(u\ ...