Bonjour,
je suis entrain de créer une galerie d'images et je veux que lorsque je clic sur une image une fenêtre s'ouvre et pivote autour d'elle même pouvez vous m'aider?
merci d'avance![]()
Bonjour,
je suis entrain de créer une galerie d'images et je veux que lorsque je clic sur une image une fenêtre s'ouvre et pivote autour d'elle même pouvez vous m'aider?
merci d'avance![]()
Salut,
Tu ne peux pas faire ça sur une fenêtre mais plutôt sur un conteneur de type Canvas ou Grid.
Un bon exemple : http://flipcontrol.codeplex.com/
Salut,
Un autre exemple ici :
http://wpfbookcontrol.codeplex.com/
bonjour rota90
Etant donne que tu es un "rotator" debutant,eh bien pour ce que tu veux faire et comme l'ont dit les collegues tu peu faire pirouetter ,danser tous les controles sauf Window,la fenetre racine et conteneur...
L'astuce c'est d'utiliser la prop Viewport2DVisual3D du ViewPort3d qui comme son nom l'indique peut henerger les controles habituels 2D dans le monde 3D.
MSDN Doc contient des exemples....
En voici un :
-un class Img avec son ObservableCollection ListImg
-un ListBox "viewer d'image"...
-un viewport3d avec un Plane Mesh (mais tu peux utilise une boule euh ...
pardon une sphere si cela te plait...)
-un bouton(ou ce que tu voudras) dans le Viewport2DVisual3d binde au ListBoxItem et à son DataTemplate(armes & bagages)....
La selection d'un listboxitem fait pivoter le viewport3d de 40 degres mais tu peux ajouter d'autres effets (transitions de couleurs dans le listbox qui sont repercutes tout a fait fans le viewport)......
code behind du class Img exemple:
code xaml du form (tout est la) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections.ObjectModel; namespace WpfFom3D { public class Img { public Img() { } public Img(string N,string Ur) { this.Name = N; this.UriImage = Ur; } public string Name { get; set; } public string UriImage { get; set; } } public class ListImg:ObservableCollection<Img> { private Img myImage; public ListImg() { myImage=new Img("image1","images/giraffe.jpg"); this.Add(myImage); myImage=new Img("image2","images/Hand.jpg"); this.Add(myImage); myImage=new Img("image3","images/zebra.jpg"); this.Add(myImage); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119 <Window x:Class="WpfFom3D.WinListBoItem3D" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfFom3D" Title="WinListBoItem 3D" Height="350" Width="500"> <Window.Resources> <local:ListImg x:Key="myDataSource"></local:ListImg> <DataTemplate x:Key="myDataTemplate" DataType="{x:Type local:Img}"> <Border BorderBrush="CornflowerBlue" BorderThickness="2" CornerRadius="5"> <StackPanel Orientation="Vertical"> <Image Height="50" Width="50" Stretch="Uniform" Source="{Binding UriImage}"/> <TextBlock TextAlignment="Center" Foreground="DarkBlue" Background="WhiteSmoke" Text="{Binding Name}"/> </StackPanel> </Border> </DataTemplate> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <ListBox Grid.Column="0" x:Name="myLB" ItemTemplate="{StaticResource myDataTemplate}" ItemsSource="{StaticResource myDataSource}"> <ListBox.Triggers> <EventTrigger RoutedEvent="ListBox.SelectionChanged"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetName="RotPage" Storyboard.TargetProperty="Angle" From="0" To="40" Duration="0:0:3" /> </Storyboard> </BeginStoryboard> </EventTrigger> </ListBox.Triggers> </ListBox> <!--un border pour mettre en evidence le viewport--> <Border Grid.Column="1" BorderBrush="Pink" BorderThickness="2" CornerRadius="5"> <Viewport3D> <!-- 1/ un camera--> <Viewport3D.Camera> <PerspectiveCamera Position="0, 0, 4"/> </Viewport3D.Camera> <!-- 2/ un Viewport2DVisual3D :ListBoxItem on 3D --> <Viewport2DVisual3D > <!-- Give the plane a slight rotation:un mesh plane --> <Viewport2DVisual3D.Transform> <RotateTransform3D > <RotateTransform3D.Rotation> <AxisAngleRotation3D x:Name="RotPage" Angle="0" Axis="0, 1, 0" /> </RotateTransform3D.Rotation> </RotateTransform3D> </Viewport2DVisual3D.Transform> <!-- The Geometry, Material, and Visual for the Viewport2DVisual3D --> <Viewport2DVisual3D.Geometry> <MeshGeometry3D Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0" TextureCoordinates="0,0 0,1 1,1 1,0" TriangleIndices="0 1 2 0 2 3"/> </Viewport2DVisual3D.Geometry> <!--note comment on doit specifier DiffuseMaterial--> <Viewport2DVisual3D.Material> <DiffuseMaterial Viewport2DVisual3D.IsVisualHostMaterial="True" Brush="White"/> </Viewport2DVisual3D.Material> <!--un ContentControl binde au ListBoxitem & à son DataTemplat qui sera visible dans le plane mesh--> <Button Click="Button_Click" ContentTemplate="{StaticResource myDataTemplate}" Content="{Binding ElementName=myLB,Path=SelectedItem}"> </Button> </Viewport2DVisual3D> <!-- Lights --> <ModelVisual3D> <ModelVisual3D.Content> <DirectionalLight Color="#FFFFFFFF" Direction="0,0,-1"/> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D> </Border> </Grid> </Window>
code behind du form pesque rien (un petit message du bouton clique):
bon code....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; using System.Windows.Media.Media3D; namespace WpfFom3D { /// <summary> /// Logique d'interaction pour Window2.xaml /// </summary> public partial class WinListBoItem3D : Window { public WinListBoItem3D() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Hellow 3D"); } } }
bonjour,
merci pour l'aide j'ai finalement résolu mon problème en faisant la fenêtre transparente a l'aide de :
comme ça seul l'image qui se trouve à l’intérieur de la fenêtre qui apparaît faisant un rotation en 3D
Code : Sélectionner tout - Visualiser dans une fenêtre à part AllowsTransparency="True" WindowStyle="None" Background="Transparent"![]()
Partager