当前位置: 移动技术网 > IT编程>脚本编程>Shell > PowerShell中调用WPF生成炫酷窗口实例

PowerShell中调用WPF生成炫酷窗口实例

2017年12月08日  | 移动技术网IT编程  | 我要评论

怎样在powershell中调用wpf,你知道,我也知道;怎样在powershell中将很长的.net类型名称缩短成别名,你知道,我也知道。但是怎样将这两个知识点融汇贯通,写出一个优雅的demo,并且让你一眼就能看出,这就是wpf,不是别的,也许你以前就知道,而我直到今天才知道,有种相见恨晚的感觉。

先看一下炫酷的效果吧!

powershell之wpf炫酷

# plik: 4_demo_v3_reflection.ps1
#requires -version 3
 
$akceleratory =
  [psobject].
  assembly.
  gettype("system.management.automation.typeaccelerators")
 
add-type -assemblyname presentationcore, presentationframework -passthru |
  where-object ispublic |
  foreach-object {
    $class = $_
    try {
      $akceleratory::add($class.name,$class)
    } catch {
      "failed to add $($class.name) accelerator pointing to $($class.fullname)"
    }
  }
 
[window]@{
  opacitymask = [drawingbrush]@{
    drawing = [drawinggroup]@{
      children = & {
        $kolekcja = new-object drawingcollection
        $kolekcja.add([geometrydrawing]@{
          brush = 'black'
          geometry = [ellipsegeometry]@{
            radiusx = 0.48
            radiusy = 0.48
            center = '0.5,0.5'
          }
        })
        $kolekcja.add([geometrydrawing]@{
          brush = 'transparent'
          geometry = [rectanglegeometry]@{
            rect = '0,0,1,1'
          }
        })
        , $kolekcja
      }
    }
  }
  background = [lineargradientbrush]@{
    opacity = 0.5
    startpoint = '0,0.5'
    endpoint = '1,0.5'
    gradientstops = & {
      $stopki = new-object gradientstopcollection
      $colors = 'blue', 'green'
        foreach ($i in 0..1) {
        $stopki.add(
          [gradientstop]@{
            color = $colors[$i]
            offset = $i
          }
        )
      }
      , $stopki
    }      
  }
  width = 800
  height = 400
  windowstyle = 'none'
  allowstransparency = $true
  effect = [dropshadoweffect]@{
    blurradius = 10
  }
  topmost = $true
  content = & {
    $stos = [stackpanel]@{
      verticalalignment = 'center'
      horizontalalignment = 'center'
    }
 
    $stos.addchild(
      [label]@{
        content = 'powershell rocks!'
        fontsize = 80
        fontfamily = 'consolas'
        foreground = 'white'
        effect = [dropshadoweffect]@{
          blurradius = 5
        }
      }
    )
    , $stos
  }
} | foreach-object {
  $_.add_mouseleftbuttondown({
    $this.dragmove()
  })
  $_.add_mouserightbuttondown({
    $this.close()
  })
  $_.showdialog() | out-null
}


如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网