2016-06-16 5 views
1

Ich entwickle Anwendung, wo ich Bilder verarbeite. Die Bildverarbeitung dauert manchmal (etwa 10 Sekunden). Ich möchte einen Fortschrittsbalken hinzufügen, der abgeschlossen wird, wenn die Bildverarbeitung nicht abgeschlossen ist. Ich habe diese Fortschrittsbalken in XAMLUWP Progress Bar in Async-Methode C#

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

Dies ist das Ereignis, das aufgerufen wird, wenn die Taste für die Bildverarbeitung

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

Ich mag Fortschrittsbalken starten geklickt wird, wenn diese ProcessImageButton Schaltfläche geklickt wird. Dies ist die Methode 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 ; 
     } 
} 

Ich möchte meine Fortschrittsbalken abgeschlossen, bevor Sie result_image in MainImage.Source speichern.

+0

Was ist Ihr Problem? Was hast du bisher versucht? – Herdo

+0

Müssen Sie den Fortschritt Ihrer Arbeit anzeigen oder möchten Sie einen unbestimmbaren Fortschrittsbalken? – Romasz

+0

@Romasz Ich möchte einen Fortschrittsbalken während der Anwendung Filterprozess auf dem Bild. –

Antwort

1

können Sie verwenden ein <ProgressRing x:Name="progress" Height="50" Width="50" IsActive="False" />

und progress.IsActive = true; am Anfang der Operation eingestellt und

progress.IsActive = false; 

am Ende der Operation

+0

Nein, ich möchte mit progressBar nicht klingeln. Und die Lösung, die Sie gezeigt haben, funktioniert nicht im Falle von progressRing. Ich habe es versucht, indem ich Fortschritte gemacht habe. IsActive = wahr; zu Beginn meiner Schaltfläche klicken Ereignis und es wurde nicht sichtbar. –

+0

Natürlich funktioniert es, ich habe es oft benutzt. Für Ihren Anlass können Sie verwenden, was Sie wollen – GeralexGR

1

Sie einen unbestimmten Fortschrittsbalken

verwenden können
<ProgressBar x:Name="ImageProgressBar" Visibility="Collapsed" IsIndeterminate="true"/> 

und Sie müssen die Visi ändern Fähigkeit vor und nach dem Laden des Bildes

 ImageProgressBar.Visibility = Visibility.Visible; 

     ImageProgressBar.Visibility = Visibility.Collapsed;