2014-10-09 13 views
5

Próbowałem wyszukiwać, ale nie mogłem znaleźć odpowiedzi na to pytanie: czy istnieją ulepszenia wydajności w korzystaniu z ImageBrush do wypełnienia prostokąta, zamiast tworzenia BitmapImage i ustawiania jego właściwości źródłowej?Wydajność BitmapImage vs. ImageBrush

muszę zdać dużą liczbę obrazów (staramy się naciskać ponad 5000) i teraz tworzę je w ten sposób:

<Image x:Name="img" RenderOptions.BitmapScalingMode="LowQuality" 
    Source="{Binding Path, Converter={StaticResource StringToImageConverter}, ConverterParameter={StaticResource string}}" > 
</ext:IdImage> 

oraz w konwerterze:

System.Windows.Media.Imaging.BitmapImage image = new System.Windows.Media.Imaging.BitmapImage(); 
image.BeginInit(); 
image.UriSource = new Uri(value as String); 
image.DecodePixelWidth = int.Parse((String)parameter); 
image.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad; 
image.EndInit(); 
return image; 

NB: Muszę użyć konwertera, aby ustawić właściwość DecodePixelWidth.

Za pomocą ImageBrush mogłem zamrozić pędzel w ten sposób, zgodnie z tym, co czytałem, zwiększając wydajność, więc zastanawiałem się, czy powinienem zmienić sposób, w jaki buduję obrazy.

P.S. Obrazy nie są statyczne, ale są tłumaczone.

+0

Niska prędkość podczas renderowania obrazu? Powoli używam BitmapImage ImageBrusch? – daniele3004

+0

Witamy w StackOverflow! Zobacz "[Czy na pytania powinny się znaleźć tagi" w swoich tytułach?] (Http://meta.stackexchange.com/questions/19190/) ", gdzie konsensus brzmi" nie, nie powinien ". –

+0

Dlaczego nie wdrożyć benchmark wydajności sam? tylko mówię' ... –

Odpowiedz

0

Myślę, że problem nie jest w kodzie, ale w architekturze WPF.

Jeśli Twoim problemem jest wydajność, dla mojego osobistego doświadczenia rozwijanie XAML jest konieczne, aby komputer był wyposażony w dedykowaną kartę graficzną. Jednak wiele razy, nawet w bardzo starym PC z Windows XP do cienkiej programu zrobiłem zainstalować aktualizacje Direct X bibliotekę

http://support.microsoft.com/kb/179113/en

XAML jest oparty na DirectX

Wypróbuj go i daj mi znać

Powiązane problemy