Traduction▲
Ce tutoriel est la traduction la plus fidèle possible du tutoriel original de Peter Bull, Microsoft Silverlight 4 - Image Carousel in Silverlight.
Introduction▲
Image Carousel est un carrousel qui permet d'afficher des images en tournant. Dans le cas présent, il s'agit d'un carrousel horizontal.
Carrousel d'images en Silverlight▲
Étape 1▲
Démarrez Microsoft Visual Web Developer 2010 Express, ensuite sélectionnez Fichier puis Nouveau Projet… Sélectionnez Visual Basic ensuite Application Silverlight dans les modèles installés, sélectionnez un emplacement si vous le souhaitez, puis entrez un nom pour le projet et appuyez sur OK :
Étape 2▲
Une nouvelle fenêtre Nouvelle application Silverlight devrait apparaître, décochez la case Héberger l'application Silverlight sur un nouveau site Web, puis sélectionnez la Version de Silverlight ciblée :
Étape 3▲
Une page vierge nommée MainPage.xaml devrait alors apparaître :
Étape 4▲
Sélectionnez Projet puis Ajouter nouvel élément… et sélectionnez le modèle Contrôle utilisateur Silverlight s'il ne l'est pas déjà, puis modifiez le Nom en CarouselItem.xaml :
Étape 5▲
Ajoutez le nouveau contrôle utilisateur au projet en cliquant sur Ajouter, ensuite dans le volet XAML pour le contrôle utilisateur CarouselItem.xaml, changez les attributs DesignHeight et DesignWidth à 100 pour la balise <UserControl> :
Étape 6▲
Pendant que nous en sommes au volet XAML de CarouselItem.xaml, en dessous de <Grid> et au-dessus de la balise </Grid>, tapez le code Image Control XAML suivant :
<Image
Height
=
"100"
Width
=
"100"
Name
=
"Image"
>
<Image.RenderTransform>
<TransformGroup>
<ScaleTransform
ScaleX
=
"1"
ScaleY
=
"1"
x
:
Name
=
"ItemScale"
/>
</TransformGroup>
</Image.RenderTransform>
</Image>
Voir ci-dessous :
Étape 7▲
Faites un clic droit sur la page ou sur l'entrée pour CarouselItem.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, en dessous de la ligne Inherits UserControl, tapez le code suivant :
Public
Angle As
Double
=
0
Étape 8▲
Sélectionnez Projet puis Ajouter un nouvel élément… et sélectionnez le modèle Contrôle utilisateur Silverlight s'il ne l'est pas déjà, puis modifiez le Nom en Carousel.xaml :
Étape 9▲
Ajoutez le nouveau contrôle utilisateur au projet en cliquant sur Ajouter, ensuite dans le volet XAML pour le contrôle utilisateur Carousel.xaml, changez l'attribut DesignHeight à 250 et l'attribut DesignWidth à 350 pour la balise <UserControl> :
Étape 10▲
Puisque nous en sommes au volet XAML de Carousel.xaml, en dessous de <Grid> et au-dessus de la balise </Grid>, tapez le code XAML suivant :
<Canvas
Height
=
"250"
Width
=
"350"
x
:
Name
=
"Container"
>
<Canvas
Height
=
"100"
Width
=
"100"
x
:
Name
=
"Display"
/>
</Canvas>
Voir ci-dessous :
Étape 11▲
Faites un clic droit sur la page ou sur l'entrée pour Carousel.xaml dans l'Explorateur de solutions et choisissez l'option Afficher le code. Dans la vue de code, en dessous de la ligne Inherits UserControl, tapez ceci :
Private
_rotate As
New
Storyboard
Private
_images As
New
List
(
Of
ImageSource)
Private
_items As
New
List
(
Of
CarouselItem)
Private
_position As
Point
Private
_radius As
Point =
New
Point With
{.X
=
150
, .Y
=
-40
}
Private
_speed As
Double
=
0.0125
Private
_perspective As
Double
=
200
Private
_distance As
Double
Étape 12▲
Toujours dans la vue de code pour Carousel, au-dessus de la ligne Public Sub New(), tapez les Sub suivants :
Private
Sub
Populate
(
ByRef
Canvas As
Canvas)
Canvas.Children.Clear
(
)
For
Each
_image In
_images
Dim
_index As
Integer
Dim
_item As
New
CarouselItem
_item.Image.Source
=
_image
_item.Angle
=
_index *
((
Math.PI
*
2
) /
_images.Count
)
_position.X
=
Math.Cos
(
_item.Angle
) *
_radius.X
_position.Y
=
Math.Sin
(
_item.Angle
) *
_radius.Y
Canvas.SetLeft
(
_item, _position.X
)
Canvas.SetTop
(
_item, _position.Y
)
_distance =
1
/
(
1
-
(
_position.Y
/
_perspective))
_item.ItemScale.ScaleY
=
_distance
_item.ItemScale.ScaleX
=
_item.ItemScale.ScaleY
_item.Opacity
=
_item.ItemScale.ScaleX
_items.Add
(
_item)
Canvas.Children.Add
(
_item)
_index +=
1
Next
End
Sub
Private
Sub
Rotate
(
)
For
Each
_item As
CarouselItem In
_items
_item.Angle
-=
_speed
_position.X
=
Math.Cos
(
_item.Angle
) *
_radius.X
_position.Y
=
Math.Sin
(
_item.Angle
) *
_radius.Y
Canvas.SetLeft
(
_item, _position.X
)
Canvas.SetTop
(
_item, _position.Y
)
If
_radius.Y
>=
0
Then
_distance =
1
*
(
1
-
(
_position.Y
/
_perspective))
Canvas.SetZIndex
(
_item, CInt
(
_position.Y
))
Else
_distance =
1
/
(
1
-
(
_position.Y
/
_perspective))
Canvas.SetZIndex
(
_item, CInt
(
_position.Y
))
End
If
_item.ItemScale.ScaleY
=
_distance
_item.ItemScale.ScaleX
=
_item.ItemScale.ScaleY
_item.Opacity
=
_item.ItemScale.ScaleX
Next
_rotate.Begin
(
)
End
Sub
Public
Sub
Add
(
ByVal
Source As
ImageSource)
_images.Add
(
Source)
Populate
(
Display)
End
Sub
Public
Sub
RemoveLast
(
)
If
_images.Count
>
0
Then
_images.RemoveAt
(
_images.Count
-
1
)
Populate
(
Display)
End
If
End
Sub
Public
Sub
Clear
(
)
_images.Clear
(
)
Populate
(
Display)
End
Sub
Étape 13▲
Puisque nous en sommes à la vue de code pour le contrôle utilisateur Carousel, dans le constructeur Public Sub New() en dessous de la ligne InitializeComponent(), tapez le code suivant :
Canvas.SetLeft
(
Display, Container.Width
/
2
-
Display.Width
/
2
)
Canvas.SetTop
(
Display, Container.Height
/
2
-
Display.Height
/
2
)
AddHandler
_rotate.Completed
, AddressOf
Rotate
_rotate.Begin
(
)
Étape 14▲
Sélectionnez Debug puis l'option Build ImageCarousel à partir du menu :
Étape 15▲
Retournez au concepteur de vues MainPage.xaml en sélectionnant l'onglet MainPage.xaml, ou en double-cliquant sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions.
Puis dans la section Tous les contrôles Silverlight de la Boîte à outils, sélectionnez le contrôle Canvas :
Étape 16▲
Dessinez deux Canvas sur la page, ensuite dans le volet XAML au-dessus de <Grid> modifiez les lignes <Canvas> comme ceci :
<Canvas
Height
=
"35"
Width
=
"400"
VerticalAlignment
=
"Top"
HorizontalAlignment
=
"Left"
Name
=
"Toolbar"
></Canvas>
<Canvas
Height
=
"265"
Width
=
"400"
Margin
=
"0,35,0,0"
VerticalAlignment
=
"Top"
HorizontalAlignment
=
"Left"
Name
=
"Body"
></Canvas>
Voir ci-dessous :
Étape 17▲
Puis dans la section Contrôles Silverlight communs de la Boîte à outils, sélectionnez le contrôle Button :
Étape 18▲
Dessinez trois boutons sur la barre d'outils Canvas en glissant les boutons de la Boîte à outils sur le Canvas, ensuite dans le volet XAML entre les balises <Canvas> et </Canvas> modifiez les lignes <Button> comme ceci :
<Button Canvas.
Left
=
"6"
Canvas.
Top
=
"6"
Height
=
"23"
Width
=
"75"
Name
=
"Add"
Content
=
"Add..."
/>
<Button Canvas.
Left
=
"87"
Canvas.
Top
=
"6"
Height
=
"23"
Width
=
"75"
Name
=
"Remove"
Content
=
"Remove"
/>
<Button Canvas.
Left
=
"168"
Canvas.
Top
=
"6"
Height
=
"23"
Width
=
"75"
Name
=
"Clear"
Content
=
"Clear"
/>
Voir ci-dessous :
Étape 19▲
Puis dans la section Contrôles ImageCarousel de la Boîte à outils, sélectionnez le contrôle Carousel :
Étape 20▲
Dessinez un Carousel sur le plus grand Canvas (Body) en glissant le Carousel de la Boîte à outils sur le Canvas, puis dans le volet XAML entre les balises <Canvas> et </Canvas> modifiez le code XAML my:Carousel comme ceci :
<
my
:
Carousel Canvas.
Left
=
"25"
Canvas.
Top
=
"5"
x
:
Name
=
"Images"
/>
Voir ci-dessous :
Étape 21▲
En étant toujours dans le concepteur de vues pour MainPage.xaml, double-cliquez sur le bouton Add… et tapez ceci dans le Sub Add_Click :
Dim
OpenDialog As
New
OpenFileDialog
OpenDialog.Filter
=
"JPEG Image (*.jpg;*.jpeg)|*.jpg;*.jpeg"
If
OpenDialog.ShowDialog
Then
Try
If
OpenDialog.File.Exists
Then
Using
FileStream As
IO.Stream
=
OpenDialog.File.OpenRead
Dim
Source As
New
Imaging.BitmapImage
Source.SetSource
(
FileStream)
Images.Add
(
Source)
End
Using
End
If
Catch
ex As
Exception
' Ignore Errors
End
Try
End
If
Étape 22▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ou faites un clic droit sur la page ou sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions et choisissez l'option Concepteur de vues.
Double-cliquez sur le bouton Remove et tapez ceci dans le Sub Remove_Click :
Images.RemoveLast
(
)
Étape 23▲
Retournez au concepteur de vues en sélectionnant l'onglet MainPage.xaml, ou faites un clic droit sur la page ou sur l'entrée pour MainPage.xaml dans l'Explorateur de solutions et choisissez l'option Concepteur de vues.
Double-cliquez sur le bouton Clear et tapez ceci dans le Sub Clear_Click :
Images.Clear
(
)
Étape 24▲
Enregistrez le projet maintenant que vous avez terminé l'application Silverlight. Sélectionnez Debug ensuite Démarrer le débogage ou cliquez sur Démarrer le débogage :
Une fois que vous l'aurez fait, ce qui suit apparaîtra dans une nouvelle fenêtre du navigateur :
Étape 25▲
Cliquez sur le bouton Add…, puis à l'aide de la boîte de dialogue Ouvrir un fichier, sélectionnez une image. Vous pouvez le faire plusieurs fois afin d'ajouter davantage d'images au carrousel :
Étape 26▲
Fermez l'application et la fenêtre du navigateur en cliquant sur le bouton Fermer en haut à droite de la fenêtre de l'application et du navigateur Web pour Arrêter l'application.
Conclusion▲
Il s'agit d'un simple carrousel pour afficher des images. Le carrousel pourrait être modifié afin d'afficher n'importe quel type de contenu y compris des vidéos ou d'autres contenus. Essayez de le modifier pour en faire un carrousel vertical - personnalisez-le !
Liens▲
Remerciements▲
Je tiens ici à remercier Peter Bull de m'avoir autorisé à traduire son tutoriel.
Je remercie tomlev pour sa relecture technique et ses propositions.
Je remercie également ClaudeLELOUP pour sa relecture orthographique et ses propositions.