-1
private void Start_Click(object sender, RoutedEventArgs e)
{
if (listView.Items.Count > 0)
worker.RunWorkerAsync();
}
DoWorkでは、イメージファイルのサイズを変更してハードディスクに保存し、パーセンテージとイメージ数を報告します。 ProgressChangedイベントでは、progressBarといくつかのラベルを更新しています。私は何をしたいかアイテムの操作が終了した後、listViewアイテムを文字列に置き換えるにはどうすればよいですか?
private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < directories.Count; i++)
{
BitmapImage imagetosave = ResizeImage(directories[i]);
Save(imagetosave, saveDirectory);
int percents = ((i + 1) * 100)/directories.Count;
worker.ReportProgress(percents, i);
}
}
private void Worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
label.Content = e.ProgressPercentage.ToString() + "%";
label2.Content = e.UserState;
}
private void Worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
は、各時間イメージは、「サイズ変更して保存」と多分緑に例えばアイテムを着色するためのリストビュー内の項目のテキストを変更するサイズを変更して、ハードディスクに保存されました。
私は画像のサイズを変更して保存する方法。これは、次のとおりです。
public void Save(BitmapImage image, string filePath)
{
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(image));
using (var fileStream = new System.IO.FileStream(filePath, System.IO.FileMode.Create))
{
encoder.Save(fileStream);
}
}
private BitmapImage ResizeImage(string file)
{
var bitmap = new BitmapImage();
var stream = File.OpenRead(file);
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.DecodePixelHeight = 100;
bitmap.DecodePixelWidth = 100;
bitmap.EndInit();
stream.Close();
stream.Dispose();
return bitmap;
}