[英]How can I reset the content of Windows.Form in powershell?
我正在尝试创建一个 PS 脚本,首先我创建一个 Windows.Forms.Form ZA8CFDE6331BD59EB2AC96F8911BD59EB2AC96F8911C4B666Z,然后我添加一个油漆然后我想要一个圆圈和两条可见的线条清晰,再画一个黄色圆圈,这样只有黄色圆圈是可见的。 但是,我不能使之前的油漆(带有两条红线的绿色圆圈)消失。 有没有办法重置表单内容?
[reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")
[reflection.assembly]::LoadWithPartialName( "System.Drawing")
[reflection.assembly]::LoadWithPartialName( "System.Drawing.Color")
$myBrush = new-object Drawing.SolidBrush green
$myYellowBrush = New-Object Drawing.SolidBrush yellow
$mypen = new-object Drawing.Pen black
$rect = new-object Drawing.Rectangle 10, 10, 180, 180
$sencondRect = new-object Drawing.Rectangle 30, 30, 60, 60
$form = New-Object Windows.Forms.Form
$form.SetBounds(300,300,800,600)
$formGraphics = $form.createGraphics()
$form.Refresh()
$form.Show()
Write-Output "hello"
$form.add_paint(
{
$formGraphics.FillEllipse($myBrush, $rect)
$mypen.color = "red"
$mypen.width = 5
$formGraphics.DrawLine($mypen, 10, 10, 190, 190)
$formGraphics.DrawLine($mypen, 190, 10, 10, 190)
}
)
Start-Sleep -s 1
$form.ResetForeColor()
$form.ResetBackColor()
$formGraphics = $form.createGraphics()
$form.add_paint(
{
$myYellowBrush = New-Object Drawing.SolidBrush yellow
$sencondRect = new-object Drawing.Rectangle 30, 30, 60, 60
$formGraphics.FillEllipse($myYellowBrush, $sencondRect)
}
)
$form.Refresh()
Paint 是要“循环”的处理程序。 尝试使用 if 语句:
[reflection.assembly]::LoadWithPartialName( "System.Windows.Forms")
[reflection.assembly]::LoadWithPartialName( "System.Drawing")
[reflection.assembly]::LoadWithPartialName( "System.Drawing.Color")
$myBrush = new-object Drawing.SolidBrush green
$myYellowBrush = New-Object Drawing.SolidBrush yellow
$mypen = new-object Drawing.Pen red
$mypen.Width = 5
$rect = new-object Drawing.Rectangle 10, 10, 180, 180
$secondRect = new-object Drawing.Rectangle 30, 30, 60, 60
$form = New-Object Windows.Forms.Form
$form.SetBounds(300,300,800,600)
$form.Show()
$formGraphics = $form.createGraphics()
$formGraphics2 = $form.createGraphics()
$crossMode = $true
$form.add_paint({
if($crossMode) {
$formGraphics.FillEllipse($myBrush, $rect)
$formGraphics.DrawLine($mypen, 10, 10, 190, 190)
$formGraphics.DrawLine($mypen, 190, 10, 10, 190)
} else {
$formGraphics2.FillEllipse($myYellowBrush, $secondRect)
}
})
$form.Refresh()
Start-Sleep -s 1
$crossMode = $false
$form.Refresh()
Start-Sleep -s 5
$form.Close()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.