Mini Kabibi Habibi
<local:CarouselDemoModule x:Class="CarouselDemo.MediaStore"
x:Name="MediaStoreModule"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxca="http://schemas.devexpress.com/winfx/2008/xaml/carousel"
xmlns:dxdb="http://schemas.devexpress.com/winfx/2008/xaml/demobase"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:local="clr-namespace:CarouselDemo"
xmlns:collection="clr-namespace:System.Collections;assembly=mscorlib"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore"
>
<local:CarouselDemoModule.Resources>
<ResourceDictionary>
<collection:ArrayList x:Key="ComponentInfoArray">
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/White.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Green.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Pink.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Blue.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Purple.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Green-Blue.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Red.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Yellow.jpg"></BitmapImage>
<BitmapImage UriSource="/CarouselDemo;component/Data/Images/AlbumCovers/Gray.jpg"></BitmapImage>
</collection:ArrayList>
<dxca:ParameterCollection x:Key="parameterSet">
<dxca:Parameter Name="ZIndex" DistributionFunction="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type dxca:CarouselPanel}, ResourceId=Linear3PConvexERIntMax}}" />
<dxca:Parameter Name="Opacity">
<dxca:Parameter.DistributionFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="0" />
<Point X="0.1" Y="1" />
<Point X="0.5" Y="1" />
<Point X="0.9" Y="1" />
<Point X="1" Y="0" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:Parameter.DistributionFunction>
</dxca:Parameter>
<dxca:Parameter Name="Scale">
<dxca:Parameter.DistributionFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="3" />
<Point X="0.5" Y="6" />
<Point X="1" Y="3" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:Parameter.DistributionFunction>
</dxca:Parameter>
<dxca:Parameter Name="Angle3d">
<dxca:Parameter.DistributionFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="10" />
<Point X="0.25" Y="40" />
<Point X="0.5" Y="0" />
<Point X="0.75" Y="-40" />
<Point X="1" Y="-10" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:Parameter.DistributionFunction>
</dxca:Parameter>
</dxca:ParameterCollection>
</ResourceDictionary>
</local:CarouselDemoModule.Resources>
<dxdb:DemoModuleControl>
<Grid ClipToBounds="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="80" />
</Grid.RowDefinitions>
<Border Grid.Column="1" HorizontalAlignment="Stretch" x:Name="back" VerticalAlignment="Stretch" Width="Auto" Height="Auto" CornerRadius="0" Padding="0">
<Grid Width="Auto" Height="Auto" ClipToBounds="True">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border HorizontalAlignment="Stretch" Margin="0,0,0,-1" VerticalAlignment="Stretch" Width="Auto" Height="Auto" CornerRadius="0">
<Border.Background>
<RadialGradientBrush GradientOrigin="0.5,0.522">
<RadialGradientBrush.RelativeTransform>
<TransformGroup>
<ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.973" ScaleY="1.608" />
<SkewTransform AngleX="-0.128" AngleY="0" CenterX="0.5" CenterY="0.5" />
<RotateTransform Angle="0" CenterX="0.5" CenterY="0.5" />
<TranslateTransform X="0.001" Y="0.501" />
</TransformGroup>
</RadialGradientBrush.RelativeTransform>
<GradientStop Color="#FF22242D" Offset="0" />
<GradientStop Color="#FF282A32" Offset="1" />
</RadialGradientBrush>
</Border.Background>
</Border>
<Border Background="Black" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Width="Auto" Height="Auto" Margin="0,-1,0,0" Grid.Row="1" CornerRadius="0" />
<Grid Grid.RowSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*" />
<ColumnDefinition Width="0.6*" />
<ColumnDefinition Width="0.2*" />
</Grid.ColumnDefinitions>
<dxca:CarouselItemsControl Grid.Column="1" x:Name="carouselItemsControl" ItemsSource="{StaticResource ComponentInfoArray}" VerticalAlignment="Bottom" Focusable="False">
<ItemsControl.ItemContainerStyle>
<Style TargetType="{x:Type ContentControl}">
<Setter Property="Focusable" Value="False" />
<Setter Property="RenderTransformOrigin" Value="0.5, 0.5" />
<Setter Property="Opacity" Value="{Binding Path=(dxca:CarouselPanel.Parameters).Opacity, RelativeSource={RelativeSource Self}}" />
<Setter Property="Panel.ZIndex" Value="{Binding Path=(dxca:CarouselPanel.Parameters).ZIndex, Converter={local:DoubleToIntConverter},RelativeSource={RelativeSource Self}}" />
<Setter Property="RenderTransform">
<Setter.Value>
<TransformGroup>
<ScaleTransform ScaleX="{Binding Path=(dxca:CarouselPanel.Parameters).Scale, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
ScaleY="{Binding Path=(dxca:CarouselPanel.Parameters).Scale, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
/>
<RotateTransform Angle="{Binding Path=(dxca:CarouselPanel.Parameters).Angle, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
/>
<TranslateTransform X="{Binding Path=(dxca:CarouselPanel.Parameters).OffsetX, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
Y="{Binding Path=(dxca:CarouselPanel.Parameters).OffsetY, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type FrameworkElement}}}"
/>
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<dxca:CarouselPanel
RenderOptions.BitmapScalingMode="HighQuality"
Style="{DynamicResource carouselStyle}"
ItemSize="100,100"
PathVisible="False"
AttractorPointIndex="3"
AnimationTime="500"
IsAutoSizeItem="True"
IsRepeat="False"
OffsetAnimationAddFunction="{StaticResource {ComponentResourceKey TypeInTargetAssembly={x:Type dxca:CarouselPanel}, ResourceId=InvertedSine}}"
ParameterSet="{DynamicResource parameterSet}"
Focusable="False"
>
<dxca:CarouselPanel.PointPathFunction>
<dxca:PieceLinearFunction>
<dxca:PieceLinearFunction.Points>
<dxca:PointCollection>
<Point X="0" Y="0" />
<Point X="55" Y="0" />
<Point X="110" Y="0" />
<Point X="230" Y="0" />
<Point X="350" Y="0" />
<Point X="405" Y="0" />
<Point X="460" Y="0" />
</dxca:PointCollection>
</dxca:PieceLinearFunction.Points>
</dxca:PieceLinearFunction>
</dxca:CarouselPanel.PointPathFunction>
<dxca:CarouselPanel.ItemMovingPath>
<PathGeometry Figures="M0,0 100,0" />
</dxca:CarouselPanel.ItemMovingPath>
</dxca:CarouselPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Viewport3D Name="viewport3D">
<Viewport3D.Camera>
<PerspectiveCamera Position="0, 1, 6" />
</Viewport3D.Camera>
<Viewport2DVisual3D>
<Viewport2DVisual3D.Visual>
<StackPanel Orientation="Vertical" Background="Black">
<Border Name="item" Width="256" Height="256" HorizontalAlignment="Center" Background="#FF000000" Padding="1,1,1,1" SnapsToDevicePixels="True">
<Image HorizontalAlignment="Left" VerticalAlignment="Top" Source="{Binding}" Stretch="UniformToFill" />
</Border>
<Rectangle Height="256" RenderOptions.CachingHint="Cache">
<Rectangle.Fill>
<VisualBrush Visual="{Binding ElementName=item}" />
</Rectangle.Fill>
<Rectangle.LayoutTransform>
<ScaleTransform ScaleY="-1" />
</Rectangle.LayoutTransform>
<Rectangle.OpacityMask>
<LinearGradientBrush EndPoint="0,1">
<GradientStop Offset="0.5" Color="Transparent" />
<GradientStop Offset="1" Color="#5A000000" />
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
</StackPanel>
</Viewport2DVisual3D.Visual>
<Viewport2DVisual3D.Transform>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="{Binding Path=(dxca:CarouselPanel.Parameters).Angle3d, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContentControl}}}" Axis="0, 1, 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Viewport2DVisual3D.Transform>
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D Positions="-1,2,0 -1,-2,0 1,-2,0 1,2,0"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="0 1 2 0 2 3"
/>
</Viewport2DVisual3D.Geometry>
<Viewport2DVisual3D.Material>
<DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" />
</Viewport2DVisual3D.Material>
</Viewport2DVisual3D>
<ModelVisual3D>
<ModelVisual3D.Content>
<DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1" />
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>
</DataTemplate>
</ItemsControl.ItemTemplate>
</dxca:CarouselItemsControl>
</Grid>
</Grid>
</Border>
<Border Grid.Row="1" SnapsToDevicePixels="True" BorderBrush="#FF7B8097" BorderThickness="0,1,0,0">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF5A5E71" Offset="0" />
<GradientStop Color="#FF54586B" Offset="1" />
<GradientStop Color="#FF535669" Offset="0.5" />
<GradientStop Color="#FF4E5163" Offset="0.5" />
</LinearGradientBrush>
</Border.Background>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Border Opacity="0.5" Padding="1" CornerRadius="4" Background="#FF191a21" BorderThickness="0,0,0,1" BorderBrush="#FF7b8097">
<Border CornerRadius="3" Background="#FF282a32" />
</Border>
<dxca:CarouselNavigator Carousel="{Binding ElementName=carouselItemsControl, Path=Carousel}" Margin="8" Width="300" Height="24" />
</Grid>
</Border>
</Grid>
</dxdb:DemoModuleControl>
</local:CarouselDemoModule>