У меня есть скрипт Powershell, который отображает System.Windows.Forms
для обрезки аудиофайлов. Эта форма загружает звуковой сигнал, созданный сценарием.
Когда я закрываю форму, я хотел бы удалить этот файл формы волны.
Я пытался добавить это, но это не работает.
$form.Controls.Remove($pictureBox)
$form.Refresh()
Remove-Item -Path $FilepathForWaveform -Force
Это также не работает:
$form.Dispose()
Remove-Item -Path $FilepathForWaveform -Force
Я видел этот ответ , но когда я его реализую, скрипт закрывается, не удаляя изображение .
Я использую Powershell 5.1
Весь мой сценарий здесь , и это соответствующие части:
ffmpeg -i $file_name_complete -filter_complex "showwavespic=s=640x120" -frames:v 1 $DirectoryPath\"output.png" -y
$FilepathForWaveform = dir -LiteralPath $DirectoryPath\"output.png"
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$img = [System.Drawing.Image]::Fromfile($FilepathForWaveform)
$pictureBox = new-object Windows.Forms.PictureBox
$pictureBox.Width = $img.Size.Width
$pictureBox.Height = $img.Size.Height
$pictureBox.Image = $img
$pictureBox.Anchor = [System.Windows.Forms.AnchorStyles]::Bottom
$pictureBox.Location = "15, 200"
$form.controls.add($pictureBox)
$form.ShowDialog()
Теперь я Я могу удалить изображение, когда форма закрыта, но изображение не отображается:
$FilepathForWaveform = dir -LiteralPath $DirectoryPath\"output.png"
$img = Image.FromStream(new MemoryStream(File.ReadAllBytes("[$FilepathForWaveform]")))
$pictureBox = new-object Windows.Forms.PictureBox
$pictureBox.Image = $img
$form.controls.add($pictureBox)
$form.Add_Closing({
$form.Controls.Remove($pictureBox)
$pictureBox.Dispose()
$form.Refresh()
Remove-Item -Path $FilepathForWaveform -Force
})
$form.ShowDialog() | Out-Null
$form.Dispose()
Я также пробовал это на основе этой ссылки :
$img=[System.Drawing.Image]::FromStream([System.IO.MemoryStream]$FilepathForWaveform)