C# WPF'de resim dosyalarını nasıl kullanabilir ve saklayabilirim?

II.Wilhelm

Hectopat
Katılım
11 Eylül 2020
Mesajlar
1.823
Çözümler
6
Yer
Almanya
Daha fazla  
Cinsiyet
Erkek
Meslek
König
Merhaba. WPF'ye yeni başladım. Winforms da resimlerimi Properties.Resources veya ImageList de saklayabilirken WPF de bunları göremedim. Ayrıca resim dosyaları için kullandığım System.Drawing.Image de ortadan kaybolmuş. Bunun yerine BitmapImage mi kullanmalıyım?
 
Son düzenleme:
Dediğiniz gibi klasörden alabilirim ama direk bir yerden property ile erişmeyi bekliyordum.
Compile sırasında dosyayı import etmek mi yoksa runtime da secmek mi istiyorsun? Örneğin compile sırasında statik resimlerin vardır, onların locationlarını vermişsindir, yada import edilmiş haldedir asla değişmeyecektir vs vs. Bunun için klasöre koyuyorsun sonra erişiyorsun.

Run time'da kullanıcıya resim seçme özgürlüğü vermek için;

Sonra @Vavien. 'in verdiği bağlantıdaki source belirleme yöntemiyle runtime'da belirleyebilirsin.

Örnek olması için;
C#:
 public partial class MainWindow : Window
 {
     string pathToImg = string.Empty;
     BitmapImage img = new BitmapImage();
     public MainWindow()
     {
         InitializeComponent();
     }

     private void Button_Click(object sender, RoutedEventArgs e)
     {
         var dialog = new Microsoft.Win32.OpenFileDialog();
         dialog.FileName = "";
         dialog.DefaultExt = ".png, .jpg";
         dialog.Filter = "PNG File (.png)|*.png|JPEG file (.jpg)|*.jpg|All files(*.*)|*.*";

         if(dialog.ShowDialog() == true)
         {
             img = new BitmapImage();
             img.BeginInit();
             img.UriSource = new Uri(dialog.FileName);
             img.EndInit();

             imgViewer.Source = img;
             imgViewer.Stretch = Stretch.Fill;
         }
     }
 }
XML:
<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Image HorizontalAlignment="Left" Height="172" Margin="246,143,0,0" VerticalAlignment="Top" Width="313" Name="imgViewer"/>
        <Button Content="Button" HorizontalAlignment="Center" Height="19" Margin="0,371,0,0" VerticalAlignment="Top" Width="60" Click="Button_Click"/>

    </Grid>
</Window>
1702514920464.gif
 
Compile sırasında dosyayı import etmek mi yoksa runtime da secmek mi istiyorsun? Örneğin compile sırasında statik resimlerin vardır, onların locationlarını vermişsindir, yada import edilmiş haldedir asla değişmeyecektir vs vs. Bunun için klasöre koyuyorsun sonra erişiyorsun.

Run time'da kullanıcıya resim seçme özgürlüğü vermek için;

Sonra @Vavien. 'in verdiği bağlantıdaki source belirleme yöntemiyle runtime'da belirleyebilirsin.

Örnek olması için;
C#:
 public partial class MainWindow : Window
 {
     string pathToImg = string.Empty;
     BitmapImage img = new BitmapImage();
     public MainWindow()
     {
         InitializeComponent();
     }

     private void Button_Click(object sender, RoutedEventArgs e)
     {
         var dialog = new Microsoft.Win32.OpenFileDialog();
         dialog.FileName = "";
         dialog.DefaultExt = ".png, .jpg";
         dialog.Filter = "PNG File (.png)|*.png|JPEG file (.jpg)|*.jpg|All files(*.*)|*.*";

         if(dialog.ShowDialog() == true)
         {
             img = new BitmapImage();
             img.BeginInit();
             img.UriSource = new Uri(dialog.FileName);
             img.EndInit();

             imgViewer.Source = img;
             imgViewer.Stretch = Stretch.Fill;
         }
     }
 }
XML:
<Window x:Class="WpfApp1.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:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Image HorizontalAlignment="Left" Height="172" Margin="246,143,0,0" VerticalAlignment="Top" Width="313" Name="imgViewer"/>
        <Button Content="Button" HorizontalAlignment="Center" Height="19" Margin="0,371,0,0" VerticalAlignment="Top" Width="60" Click="Button_Click"/>

    </Grid>
</Window>
Eki Görüntüle 2052074
Teşekkür ederim. Compile da nasıl yapacağımı sormuştum. Anladığım kadarıyla direk klasörden almam gerekecek.
 

Yeni konular

Geri
Yukarı