Slideshow Manual usando C# e WPF

Este exemplo é muito simples e apenas me serviu para testar:

  • carregar imagens para um controlo Image que se encontram organizadas num ResouceDictionary;
  • Selecionar as imagens mediante a utilização de dois botões “anterior” e “seguinte“;
  • Associar uma ação ao botão central, no qual está a ser exibida a imagem, que será diferente dependendo da imagem selecionada.

XAML

<Window x:Class="manualSlideShow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:manualSlideShow"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="800" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="120" />
            <ColumnDefinition Width="300" />
            <ColumnDefinition Width="120" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Button x:Name="esq" Grid.Row="1" Grid.Column="1" Height="100" VerticalAlignment="Bottom" Margin="10" Click="esq_Click">
                <Image Source = "{StaticResource esq}" />
        </Button>
        <Button x:Name="dir" Grid.Row="1" Grid.Column="3" Height="100" VerticalAlignment="Bottom" Margin="10,0,0,10" HorizontalAlignment="Left" Width="100" Click="dir_Click">
            <Image Source = "{StaticResource dir}" />
        </Button>
        <Button x:Name="selecao" Grid.Row="1" Grid.Column="2" Margin="10" Click="selecao_Click">
            <Image x:Name="img" Source = "{StaticResource inverno}"/>
        </Button>
    </Grid>
</Window>

Code-Behind

using System.Windows;
using System.Windows.Media.Imaging;

namespace manualSlideShow
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        int currentImage = 0;

        private void dir_Click(object sender, RoutedEventArgs e)
        {
            if (currentImage == 3)
                currentImage = 0;
            else
                currentImage++;
            mudarImagem(currentImage);
        }

        private void esq_Click(object sender, RoutedEventArgs e)
        {
            if (currentImage == 0)
                currentImage = 3;
            else
                currentImage--;
            mudarImagem(currentImage);
        }

        private void mudarImagem(int i)
        {
            switch (currentImage)
            {
                case 0: img.Source = (BitmapImage)Application.Current.Resources["inverno"]; break;
                case 1: img.Source = (BitmapImage)Application.Current.Resources["primavera"]; break;
                case 2: img.Source = (BitmapImage)Application.Current.Resources["verao"]; break;
                case 3: img.Source = (BitmapImage)Application.Current.Resources["outono"]; break;
            }
        }

        private void selecao_Click(object sender, RoutedEventArgs e)
        {
            switch (currentImage)
            {
                case 0: MessageBox.Show("Abrir a janela 'Inverno' ..."); break;
                case 1: MessageBox.Show("Abrir a janela 'Primavera' ..."); break;
                case 2: MessageBox.Show("Abrir a janela 'Verão' ..."); break;
                case 3: MessageBox.Show("Abrir a janela 'Outono' ..."); break;
            }
        }
    }
}

Link para Download: https://app.box.com/s/poyycszoxrhifmsqxelqrmxmrqeome0w

Ainda me falta adicionar um efeito de transição …

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s