4K画面だと、インターネット上の各種フォームサンプルが小さくて使えない件を修正するため、
System.Windows.Forms.SystemInformationを活用した例
起動すると、4K画面でも画面がきちんと表示される。(ちょっと使う分には、これで4K対応かな)
特に苦労したのが、テキストボックスのフォント、ここはC#のプログラムから移植。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
Set-PSDebug -Strict # フォーム作成 $Form = New-Object System.Windows.Forms.Form #SystemInformationからWorkingAreaのLocationとSizeを取得 $maxlocation = [System.Windows.Forms.SystemInformation]::WorkingArea.Location $maxsize = [System.Windows.Forms.SystemInformation]::WorkingArea.Size #SystemInformationからWorkingAreaのSizeの比率を変更する $maxsize.Height = $maxsize.Height * 0.25 $maxsize.Width = $maxsize.Width * 0.25 $form.Location = $maxlocation $form.Size = $maxsize # OKボタンの設定 $OKButton = New-Object System.Windows.Forms.Button $OKButton.SetBounds(10, 20, $form.Size.Height * 0.5 , $form.Size.Width * 0.1, "All") $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK $OKButton.Text = "OK" $OKButton.TabIndex = 1 # キャンセルボタンの設定 $CancelButton = New-Object System.Windows.Forms.Button $CancelButton.SetBounds(400, 20, $form.Size.Height * 0.5 , $form.Size.Width * 0.1, "All") $CancelButton.Text = "Cancel" $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel $CancelButton.TabIndex = 2 # ラベルの設定 $label = New-Object System.Windows.Forms.Label $label.SetBounds(10, 200, $form.Size.Height * 0.5 , $form.Size.Width * 0.1, "All") $label.Text = "好きな言葉を入力" # 入力ボックスの設定 $textBox = New-Object System.Windows.Forms.TextBox $textBox.SetBounds(400, 200, $form.Size.Height * 0.5 , $form.Size.Width * 0.05, "All") $textBox.Multiline = $false $textBox.AutoSize = $false $textBox.TabIndex = 3 $textBox.Font = New-Object System.Drawing.Font("MS UI Gothic", #フォント名 [float]30, #フォントサイズ変更 [System.Drawing.FontStyle]::Regular, [System.Drawing.GraphicsUnit]::Point, [byte]128); # キーとボタンの関係 $form.AcceptButton = $OKButton $form.CancelButton = $CancelButton # ボタン等をフォームに追加 $form.Controls.Add($OKButton) $form.Controls.Add($CancelButton) $form.Controls.Add($label) $form.Controls.Add($textBox) $FormResult = $Form.ShowDialog() # 結果による処理分岐 if ($FormResult -eq [System.Windows.Forms.DialogResult]::OK) { $x = $textBox.Text echo("好きな言葉を入力は:"+ $x) } |
コメント