none
Upload Image RRS feed

  • Pergunta

  • Oi,

    estou a tentar realizar um upload de imagens do computador em XAML e C#.

    Só que encalhei aqui numa situação.

     

    Tenho um botão para abrir os ficheiros, uma caixa de texto, que me dá o caminho e uma imagem onde deveria aparecer o que escolhemos.

     

    page.xaml

    <Canvas >

    <TextBox x:Name="txtFileContent" Width="628" Height="28" Canvas.Left="48" Canvas.Top="301" />

    <Button Height="21" Click="button_upload" Canvas.Left="320" Canvas.Top="266" Width="52">Click Me!</Button>

    <Image Canvas.Left="189" Canvas.Top="19" Height="232" Name="image1" Stretch="Fill" Width="281" />

    </Canvas>

     

     

    page.xaml.cs

    private void button_upload(object sender, RoutedEventArgs e)

    {

    Microsoft.Win32.OpenFileDialog fOpen = new Microsoft.Win32.OpenFileDialog();

    fOpen.Filter = "Image files (*.bmp, *.jpg)|*.bmp;*.jpg|All files (*.*)|*.*";

    fOpen.ShowDialog();

     

    txtFileContent.Text = fOpen.FileName.ToString();

     

     

    Até aqui tudo funciona bem, só depois para reconhecer o caminho da caixa de texto para a imagem, o suposto Source, não dá.

     

    Também não encontro nenhum método para o fazer .

     

    Alguma ideia?

     

    []'s

     

    quarta-feira, 6 de fevereiro de 2008 17:20

Respostas

  • Já consegui descubrir o que faltava. Segue o código completo:

     

     

    page.xaml

    <Canvas >

    <TextBox x:Name="txtFileContent" Width="628" Height="28" Canvas.Left="48" Canvas.Top="301" />

    <Button Height="21" Click="button_upload" Canvas.Left="320" Canvas.Top="266" Width="52">Click Me!</Button>

    <Image Canvas.Left="189" Canvas.Top="19" Height="232" Name="image1" Stretch="Fill" Width="281" />

    </Canvas>

     

     

    page.xaml.cs

    private void upload_Click(object sender, RoutedEventArgs e)

    {

    // Configure OpenFileDialog to open images

    OpenFileDialog dlg = new OpenFileDialog();

    dlg.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";

    // Open file, if user clicked "Open" button on OpenFileDialog

    if (dlg.ShowDialog() == true) {

    // If existing image, put into back navigation history

    if (this.viewImage.Source != null) {

    ImageCustomContentState iccs = new ImageCustomContentState(this.viewImage.Source, (string)this.nameLabel.Content);

    this.NavigationService.AddBackEntry(iccs);

    }

    // Show new image

    using (Stream stream = dlg.OpenFile()) {

    BitmapDecoder bitmapDecoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad);

    this.viewImage.Source = bitmapDecoder.Frames[0];

    this.nameLabel.Content = dlg.SafeFileName;

    }

    }

    }

     

    ImageCustomContentState

    using System;

    using System.IO;

    using System.Windows;

    using System.Windows.Media;

    using System.Windows.Media.Imaging;

    using System.Windows.Navigation;

    namespace xpto

    {

    [Serializable]

    public class ImageCustomContentState : CustomContentState

    {

    ImageSource imageSource;

    string filename;

    public ImageCustomContentState(ImageSource imageSource, string filename)

    {

    this.imageSource = imageSource;

    this.filename = filename;

    }

    public override string JournalEntryName

    {

    get { return this.filename; }

    }

    public override void Replay(NavigationService navigationService, NavigationMode mode)

    {

    Entidade xpto= (Entidade)navigationService.Content;

    xpto.viewImage.Source = this.imageSource;

    xpto.nameLabel.Content = this.filename;

    }

    }

    }

     

     

    quarta-feira, 13 de fevereiro de 2008 15:24