-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)
{
}
什麼我想要做的是,在每次圖像調整,然後保存到硬盤更改項目文本在ListView爲「調整大小並保存」,甚至可能以顏色爲綠色例如項目。
這是我如何調整圖像,並將其保存:
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;
}