<# .SYNOPSIS Draws the Store 9:16 poster (720x1080), matching the mark drawn by Packaging\New-Assets.ps1 (a dark plate with a white "Aя"). .DESCRIPTION One-off script, not part of the packaging pipeline: this poster is a Store listing image, uploaded by hand in Partner Center rather than shipped inside the MSIX, so it does not belong next to the logos that build feeds into the package. #> [CmdletBinding()] param( [string] $OutPath = (Join-Path $PSScriptRoot 'Poster720x1080.png') ) Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' Add-Type -AssemblyName System.Drawing $Width = 720 $Height = 1080 $Background = [System.Drawing.Color]::FromArgb(255, 0x20, 0x20, 0x20) $Foreground = [System.Drawing.Color]::FromArgb(255, 0xFF, 0xFF, 0xFF) $Glyph = 'Aя' $bitmap = New-Object System.Drawing.Bitmap($Width, $Height, [System.Drawing.Imaging.PixelFormat]::Format32bppArgb) $graphics = [System.Drawing.Graphics]::FromImage($bitmap) try { $graphics.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::AntiAlias $graphics.TextRenderingHint = [System.Drawing.Text.TextRenderingHint]::AntiAliasGridFit # Full bleed: Partner Center masks/rounds the poster itself, so the plate # here just fills the whole canvas rather than drawing its own corners $graphics.Clear($Background) # The glyph is sized off the width, the narrower of the two dimensions, # the same way New-Assets.ps1 sizes it off the shorter side of a square [System.Drawing.StringFormat] $format = [System.Drawing.StringFormat]::GenericTypographic.Clone() try { $target = $Width * 0.62 $ceiling = $Height * 0.30 $fontSize = $Width * 0.9 $font = $null $measured = $null for ($attempt = 0; $attempt -lt 20; $attempt++) { if ($font) { $font.Dispose() } $font = New-Object System.Drawing.Font('Segoe UI', $fontSize, [System.Drawing.FontStyle]::Bold, [System.Drawing.GraphicsUnit]::Pixel) $measured = $graphics.MeasureString($Glyph, $font, ([System.Drawing.PointF]::new(0, 0)), $format) if ($measured.Width -le $target -and $measured.Height -le $ceiling) { break } $scale = [Math]::Min($target / $measured.Width, $ceiling / $measured.Height) $fontSize = $fontSize * $scale * 0.98 } try { $x = [Math]::Round(($Width - $measured.Width) / 2.0) $y = [Math]::Round(($Height - $measured.Height) / 2.0) $brush = New-Object System.Drawing.SolidBrush($Foreground) $origin = New-Object System.Drawing.PointF($x, $y) try { $graphics.DrawString($Glyph, $font, $brush, $origin, $format) } finally { $brush.Dispose() } } finally { $font.Dispose() } } finally { $format.Dispose() } } finally { $graphics.Dispose() } try { $bitmap.Save($OutPath, [System.Drawing.Imaging.ImageFormat]::Png) } finally { $bitmap.Dispose() } Write-Host "Saved $OutPath"