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 = 0; i <= (Application.Current as App).MusicItems.Count - 1; i++)
                {
                    ID3Tag item = (Application.Current as App).MusicItems[i];
                    BitmapImage bi = new BitmapImage();
                    bi = (BitmapImage)item.Cover;
                    OrbitViewDataItem ooo = new OrbitViewDataItem
                    {
                        Diameter = arr1[i % 7],
                        Distance = arr2[i % 20],
                        Image = item.Cover,
                        Label = item.Title,
                    };

                    ovcOrbit.Add(ooo);
                }
                orbitView.ItemsSource = ovcOrbit;
            }
            catch { }

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

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

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

原文地址:https://www.cnblogs.com/hupo376787/p/8639353.html

时间: 2024-10-10 06:50:14

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

UWP 卡片视图 Card View

上一篇 提到了 UWP 轨道视图Orbit View,这次就说一下卡片视图,毕竟两个差不多. 卡片视图,效果如其名,卡片一样,左右滑动,当然能翻牌最好了. 嗯,我这个可以的额(⊙﹏⊙)... 看下效果先: 可以左右滑动,点击查看各项的内容:看下gif xaml: <ScrollViewer Grid.Row="1" ZoomMode="Enabled" VerticalScrollMode="Disabled" HorizontalScro

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

原文:ASP.NET MVC 5 - 验证编辑方法(Edit method)和编辑视图(Edit view) 在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.

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

我一般情况下不会使用interface builder去画界面,而是用纯代码去创建界面,不是装B,而是刚从vi转到xcode不久,不太习惯interface builder而已.当然如果需要我也会使用它.一个东西的存在没有绝对的好与坏,只是存在时间与空间决定了它的价值. (忘了讲了,我的环境是xcode4.2)首先要弄懂几个基本的概念. 一)三个结构体:CGPoint.CGSize.CGRect1.  CGPoint [plain] view plaincopy   /* Points. */

Android系列 -- 2、视图组件View

1.视图组件View android 绝大部分的UI组件都放在android.widget包以及其子包.android.view包以及其子包中,android应用所有组件都继承了View类 View有一个非常重要的类:ViewGroup,但ViewGroup通常作为其他组件的容器使用

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

自从1983年第一台图形用户界面的个人电脑问世以来,几乎所有的PC操作系统都支持可视化操作,Android也不例外.对于所有Android Developer来说,我们接触最多的控件就是View.通常,我们使用自定义View,需要了解最多的除了事件分发,就是View的绘制过程.然而关于View的绘制,涉及到的知识点纷繁复杂,这么多的代码知识,要梳理起来,肯定是先要找个头.那么平常我们用的最多的方法是哪个方法呢?当然是setContentView()! setContentView 首先我们直接在

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

写ASP.NET MVC程序,我们经常需要把数据从视图(View)传递至部分视图(Partial View) 或者相反. 今天Insus.NET使用 ControllerBase.TempData 进行处理. 首先演示的是View至Parital View创建一个控制器,并添加一个操作TmTestA(): 创建视图: 上图中标记#1,引用母版.标记#2,为TempData设置一个值.标记#3,使用Html.RenderPartial去Render一个部分视图. 创建部分视图,在部分视图中,去获取

OpenLayers 之 视图(View) 详解

初始化一幅地图,必备的三要素之一就是视图(view),这个对象主要是控制地图与人的交互,如进行缩放,调节分辨率.地图的旋转等控制.也就是说每个 map对象包含一个 view对象部分,用于控制与用户的交互. 主要介绍 view 的作用和用法,并分析商用的地图应用中的相关的功能.功能的具体的实现与如何进行定制和优化,就超过了这篇文章的范围了. view 类的定义可以在 GitHub 的 OpenLayers 项目中的 这里 看到,我就不贴大篇幅的代码了,只是针对特定的点贴一下核心代码,需要看完整源码

Hibernate 优化技术之调用视图(View)和存储过程(Procedure)

前言 上一篇blog记录了hibernate抓取策略的相关用法(http://blog.csdn.net/wlwlwlwl015/article/details/42705585),它主要是在对象导航时为我们进行HQL方面的优化.本篇blog将介绍一些通用性的优化方式,即在hibernate中使用视图和存储过程.在数据量比较大时(百万级),使用hibernate时不再推荐使用HQL,而是使用原生的SQL语句,而视图.索引.存储过程等数据库对象也都是基于底层数据库和原生的SQL派生出的优化方案,废

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

在本节中,您将验证电影控制器生成的编辑方法(Edit action methods)和视图.但是首先将修改点代码,使得发布日期属性(ReleaseDate)看上去更好.打开Models \ Movie.cs文件,并添加高亮行如下所示: using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace MvcMovie.Models { public class Movie