2016-06-16 2 views
1

Я разрабатываю приложение, где обрабатываю изображения. Обработка изображений занимает некоторое время (около 10 секунд). Я хочу добавить индикатор выполнения, чтобы завершить процесс обработки изображений. У меня есть этот прогресс бар в XAMLUWP Progress Bar в методе Async C#

<ProgressBar Width="200"        
Foreground="#FF8B64C3" 
Value="20" 
Maximum="100" 
BorderBrush="#FF411F72" 
BorderThickness="1"/> 

Это событие, которое вызывается при нажатии кнопки для обработки изображений

private void ProcessImageButton_Click(object sender, RoutedEventArgs e) 
{   
    applyFilters(image1Pixels, image1Width, image1Height);   
} 

Я хочу начать прогресс бар, когда эта кнопка нажата ProcessImageButton. Это метод applyFilters.

private async void applyFilters(byte[] pixels, uint width, uint height) 
{ 
     ProcessImage processImage = new ProcessImage(pixels, width, height); 

     byte[] effect = processImage.applyEffect(width, height); 

     WriteableBitmap result_image = new WriteableBitmap((int)width, (int)height); 
     using (Stream stream = result_image .PixelBuffer.AsStream()) 
     { 
      await stream.WriteAsync(effect, 0, effect.Length); 
      MainImage.Source = result_image ; 
     } 
} 

Я хочу, чтобы мой индикатор выполнения завершился, прежде чем хранить result_image в MainImage.Source.

+0

В чем проблема? Что вы пробовали до сих пор? – Herdo

+0

Вам нужно показать ход своей работы или вы хотите неопределенный индикатор выполнения? – Romasz

+0

@Romasz Я хочу индикатор выполнения во время применения фильтра на изображении. –

ответ

1

Вы можете использовать <ProgressRing x:Name="progress" Height="50" Width="50" IsActive="False" />

и установить progress.IsActive = true; в начале операции и

progress.IsActive = false; 

в конце операций

+0

Нет, я хочу использовать progressBar not ring. И решение, которое вы показали, не работает в случае progressRing. Я попробовал это, поставив progress.IsActive = true; в начале моего нажатия кнопки мыши, и это не стало видимым. –

+0

Конечно, он работает, я использовал его много раз. Для вашего случая вы можете использовать все, что вам нравится – GeralexGR

1

вы можете использовать неопределенный Прогресс бар

<ProgressBar x:Name="ImageProgressBar" Visibility="Collapsed" IsIndeterminate="true"/> 

и вам необходимо изменить visi до и после загрузки изображения

 ImageProgressBar.Visibility = Visibility.Visible; 

     ImageProgressBar.Visibility = Visibility.Collapsed;