Para tanto, precisamos dos seguintes componentes principais:
- Definimos form.CreateGraphics
- Definimos 2 pontos p1 e p2 para traçar a linha
- Criamos o objeto LinearGradientBrush
- Criamos o objeto pen
- Traçamos a linha
[System.Drawing.Graphics]$g = $f.CreateGraphics() $lgb = New-Object System.Drawing.Drawing2D.LinearGradientBrush($p1, $p2, $c1, $c2) $pen = New-Object System.Drawing.Pen($lgb) $g.DrawLine($pen, $p1, $p2)
Nesse exemplo de código, estaremos traçando linhas a partir de um ponto central a todos os 360º de um círculo. Cada linha terá o efeito gradiente com as cores verde e azul. O código é o seguinte:
[reflection.assembly]::LoadWithPartialName( "System.Windows.Forms") [reflection.assembly]::LoadWithPartialName( "System.Drawing") [System.Windows.Forms.Application]::EnableVisualStyles(); Function line([Int32]$val,[String]$c1,[String]$c2) { $ang = $val * ([math]::PI/180) ## em Radianos $r=150 ## tamanho da linha [System.Drawing.Graphics]$g = $f.CreateGraphics() $p1 = New-Object System.Drawing.Point(190, 180) $p2 = New-Object System.Drawing.Point((190+$r*[math]::Cos($ang)), (180+$r*[math]::Sin($ang))) $lgb = New-Object System.Drawing.Drawing2D.LinearGradientBrush($p1, $p2, $c1, $c2) $pen = New-Object System.Drawing.Pen($lgb) $g.DrawLine($pen, $p1, $p2) $g.Dispose() } $f = New-Object Windows.Forms.Form $f.Width = 400 $f.Height = 400 $f.Show() $f.Refresh() for ([Int32]$angulo=0;$angulo -lt 360;$angulo++) { line $angulo 'Green' 'Blue' Start-Sleep -Milliseconds 50 } Start-Sleep -s 5 $f.Close() $f.Dispose()
Segue o resultado:
Nenhum comentário:
Postar um comentário