覚書を壁紙にするPowerShellスクリプト

コンピュータ

覚書が書かれたテキストファイルをbitmapに描画して壁紙用画像ファイルを作成します。

スクリプト

<#
.SYNOPSIS
 覚書壁紙作成
.DESCRIPTION
 文字列を画像の右側に描画
.EXAMPLE
 PS>.\ChatSheetWallPaperMaker.ps1 -TextFileName テキストファイル名 -ImageFileName 画像ファイル名
#>

using namespace System.Windows.Forms
using namespace System.Drawing

Param(
    $TextFileName,
    $ImageFileName
)

# 壁紙サイズ
$width = 1366
$height = 786

# フォント
$fontSize = 20
$fontFamilly = "MS UI GOTHIC"
$font = [Font]::new($fontFamilly, $fontSize)

# 背景色
$backgroundColor = [SolidBrush]::new("DimGray")
# 前景色
$forgroundColor = "LightGray"


$bmp = [Bitmap]::new($width, $height)
$g = [Graphics]::FromImage($bmp)


# 背景塗つぶし
$rect = [Rectangle]::new(0, 0, $width, $height)
$g.FillRectangle($backgroundColor, $rect)

# 文字列の読み込み

# 最大文字数と高さ計測
$txtWidth = 0
$txtHeight = 0
foreach($line in Get-Content $TextFileName -Encoding UTF8)
{
    $m = [TextRenderer]::MeasureText($g, $line, $font)
    if ($txtWidth -lt $m.Width)
    {
        $txtWidth = $m.Width
    }
    if ($txtHeight -lt $m.Height)
    {
        $txtHeight = $m.Height
    }
}

# 文字列の描画
Write-Host $txtWidth $txtHeight
$i = 0
foreach($line in Get-Content $TextFileName -Encoding UTF8)
{
    Write-Host $line

    $w = $width - ($txtWidth + 10)
    $h = 10 + ($txtHeight + 1) * $i
    [TextRenderer]::DrawText($g, $line, $font, [Point]::new($w, $h), $forgroundColor);

    $i++
}


$g.Dispose()


$bmp.Save($ImageFileName, [Imaging.ImageFormat]::Png)

$bmp.Dispose()

壁紙サイズは環境に合わせて調整のこと

結果

win10壁紙設定手順

  1. デスクトップで右クリック
  2. 個人用設定(R)
  3. 参照ボタン

コメント