我正在编写一个 Powershell 脚本
,它将为我创建 ConfigMgr 2012 应用程序。此过程的一部分是将图标与应用程序相关联。
事实上,我正在执行的方法确实附加了我告诉它的 .ICO
文件,但质量很糟糕。我将这个相同的 .ICO
文件附加到 GUI 中的现有应用程序,它看起来很棒。我已经使用 System.Drawing.Bitmap、System.Drawing.Image
等尝试了各种技巧,但它要么抛出异常,因为它无法将其转换为 Byte 类型,要么抛出异常不要这样做,当我尝试查看它时,应用程序会使我的 ConfigMgr 控制台崩溃。
这是我当前的代码:
$icon = New-Object Microsoft.ConfigurationManagement.ApplicationManagement.Icon
$x = [System.Drawing.Icon]::ExtractAssociatedIcon($FilePathToIcon)
$icon.Data = $x
return $icon
然后,我将 $Icon 对象添加到我的 Application 对象中。我已经有了 .ICO 文件。我现在的想法是,如果我已经有一个 ICO 文件,我就不应该提取图标,但我一生都无法弄清楚如何以良好的质量获得这个东西。
最佳答案
问题似乎源于这样一个事实:如果您调用 ExtractAssociatedIcon
,您最多将获得一个 32 像素的图标。如果您想要原始图标文件的更大版本,则必须使用 System.Drawing.Icon 类的构造函数之一。所有构造函数都可以在 this link 找到。 .
限制为 32px
您会再次注意到,使用 ExtractAssociatedIcon
静态方法会限制您使用 32 像素的图标,即使原始文件大于该尺寸。
$Icon = [System.Drawing.Icon]::ExtractAssociatedIcon("C:\Users\Trevor\Downloads\Aaron-Sinuhe-Tv-Movie-Folder-Lord-Of-The-Rings-1.ico");
$Icon.Height; # 32px
$Icon.Width; # 32px
获取更大的 Icon 实例
One of the constructors允许您在[String] FileName
之后指定[int] Width
和[int] Height
参数。假设您在 c:\test\icon.ico
中有一个大的(128px+ 方形)ICO 文件,请查看以下代码。
$Icon = New-Object -TypeName System.Drawing.Icon -ArgumentList 'C:\test\icon.ico', 128, 128;
$Icon.Height; # 128px
$Icon.Width; # 128px
或者,another constructor允许您指定[String] FileName
和[System.Drawing.Size] Size
参数。
$Size = New-Object -TypeName System.Drawing.Size -ArgumentList 128, 128;
$Icon = New-Object -TypeName System.Drawing.Icon -ArgumentList 'C:\test\icon.ico', $Size;
$Icon.Height; # 128px
$Icon.Width; # 128px
关于c# - 使用 Powershell 创建 ConfigMgr 应用程序时图标质量不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21081605/