繁体   English   中英

如何重置 powershell 中 Windows.Form 的内容?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM