Καλημέρα,
Εχω φτιάξει μια εφαρμογή που φορτώνει εικόνες απο τον σκληρό δίσκο με μια απλή εφαμρογή WPF, το πρόβλημα είναι ότι όταν οι εικόνες έχουν ανάλυση 1500χ1500 και άνω καθυστερεί να τις φορτώσει, και φαίνεται ότι η εφαρμογή δεν κάνει τίποτα. Υπάρχει κάποιος τρόπος η διαδικασία φορρτώματος των εικόνων να γίνει πιό γρήγορη. Παρακάτω είναι ο κώδικας XAML της αρχική φόρμας.
<ListBox Name="Images" ListBox.SelectionChanged="lstImagesChange_Click" Grid.Column="1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled" VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling" ScrollViewer.IsDeferredScrollingEnabled="True" >
<ListBox.Resources>
<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
<Style.Triggers>
<Trigger Property="Orientation" Value="Vertical">
<Setter Property="Width" Value="20"/>
<Setter Property="Height" Value="Auto" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.Resources>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True" Orientation="Horizontal" FlowDirection="LeftToRight" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="2" BorderBrush="#bb62d8" Background="Black" Width="200" Height="200" Margin="5,5,10,5" CornerRadius="10">
<Image Source="{Binding Path=Path, Converter={StaticResource UriToBitmapConverter}}" Tag="{Binding ImageID}" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
και εδώ μια class που πειράζει τις εικόνες
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 100;
//bi.DecodePixelHeight = 100;
bi.CacheOption = BitmapCacheOption.OnDemand;
bi.UriSource = new Uri( value.ToString() );
bi.EndInit();
//return ResizeImage(bi,250,250);
return bi;
}
Ευχαριστώ εκ των προτέρων.