将System.Drawing.KnownColor转换为ARGB



我正在尝试将[System.Drawing.KnownColor]名称转换为它们的ARGB值。

这是我目前掌握的代码。这是对这里代码的修改:

https://learn-powershell.net/2013/03/07/translate-color-name-to-argb-using-powershell/

[System.Drawing.Color]的原作,但我找不到翻译KnownColor的方法。

Add-Type -AssemblyName PresentationFramework
[void][Reflection.Assembly]::LoadWithPartialName("System.Drawing")
# Get-ARGBColor - https://learn-powershell.net/2013/03/07/translate-color-name-to-argb-using-powershell/
Function Get-ARGBColor {
Param ([string[]]$Color)
Begin
{
Add-Type -AssemblyName PresentationFramework
}
Process {
If (-Not $PSBoundParameters['Color'])
{
$Colors = [System.Drawing.KnownColor] | Get-Member -static -MemberType Properties | Select -Expand Name
}
ForEach ($c in $color)
{
Try
{
$ARGB = [System.Drawing.KnownColor]$c
New-Object PSObject -Property @{
ARGB = "$([System.Drawing.KnownColor]::$c)"
Colors = $c
}
}
Catch {
Write-Warning "$c is not a valid color"
}
}
}
}
$colorKnownArr = [enum]::GetValues([System.Drawing.KnownColor]) | Get-Member -Static -MemberType Properties
Get-ARGBColor -Color $colorKnownArr[1].Name
Add-Type -AssemblyName PresentationFramework
[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')
function Get-ARGBColor {
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline = $true)]
[System.Drawing.KnownColor]
$Colors
)
process {
foreach ($color in $Colors) {
try {
$drawingColor = [System.Drawing.Color]::FromKnownColor( $color)
[PSCustomObject]@{
Color = $drawingColor.Name
aRGB  = '#{0:X2}{1:X2}{2:X2}{3:X2}' -f $drawingColor.A, $drawingColor.R, $drawingColor.G, $drawingColor.B
}
}
catch {
Write-Warning "$color is not a valid color"
[PSCustomObject]@{
Color = $color
aRGB  = 'not a valid color'
}
}
}
}
}

我刚刚找到了使用[System.Drawing.Color]::FromName($ColorName)的另一种方法

Add-Type -AssemblyName System.Drawing
function Get-ARGBColor {
[CmdletBinding()]
param (
[Parameter(ValueFromPipeline = $true, HelpMessage = 'The name of the colour, Black, White etc.')]
[System.Drawing.KnownColor]$ColorName
)
try {
$drawingColor = [System.Drawing.Color]::FromName($ColorName)
[PSCustomObject]@{
Color = $drawingColor.Name
aRGB  = '#{0:X2}{1:X2}{2:X2}{3:X2}' -f $drawingColor.A, $drawingColor.R, $drawingColor.G, $drawingColor.B
}
}
catch {
Write-Warning "$ColorName is not a valid Color"
[PSCustomObject]@{
Color = $ColorName
aRGB  = 'not a valid Color'
}
}
}
Get-ARGBColor -ColorName "Black"
# PS> Color aRGB
# PS> ----- ----
# PS> Black #FF000000
(Get-ARGBColor -ColorName "Black").Color
# PS> Black
(Get-ARGBColor -ColorName "White").aRGB
# PS> #FFFFFFFF
(Get-ARGBColor -ColorName "ActiveCaption").aRGB
# PS> #FF99B4D1

最新更新