首页 > 解决方案 > 如何以任何屏幕分辨率使 GUI 形式的图片始终位于中心?

问题描述

无论分辨率大小如何,我都想让我的图片中的那 2 个始终位于中心。我尝试了这段代码,这些图片就在我的工作屏幕的中心 (1936, 1056) 。当我在不同分辨率的其他屏幕上尝试时,图片不在中心。任何人都可以帮助我。

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Form                            = New-Object system.Windows.Forms.Form
$Form.BackColor                  = "#fcfcfc"
$Form.TopMost                    = $false
$Form.WindowState                = 'Maximized'


$img = [System.Drawing.Image]::Fromfile(".\AT3.png")
$pictureBox = new-object Windows.Forms.PictureBox

$img2 = [System.Drawing.Image]::Fromfile(".\AT2.png")
$pictureBox2 = new-object Windows.Forms.PictureBox

$Panel1 = New-Object system.Windows.Forms.Panel


$Form.controls.AddRange(@($Panel1))
$Panel1.controls.AddRange(@($pictureBox2,$pictureBox))


[void]$Form.Show()


$Panel1.height                   = $Form.Height / 2
$Panel1.width                    = $Form.Width
$Panel1.Anchor                   = "None"
$Panel1.location                 = New-Object System.Drawing.Point(1,($Panel1.height/2))
$Panel1.BackColor                  = "#fcfcfc"

$pictureBox2.Location = New-Object System.Drawing.Point(($Panel1.width/2.5),($Panel1.height/2.5))
$pictureBox2.Width = $Form.Size.Width / 2
$pictureBox2.Height = $Form.Size.Height / 2
$pictureBox2.Image = $img2

$pictureBox.Location = New-Object System.Drawing.Point(($Panel1.width/2.8),($Panel1.height/9))
$pictureBox.Width = $Form.Size.Width / 0.5
$pictureBox.Height = $Form.Size.Height / 0.5
$pictureBox.Image = $img

Write-Host $Form.Width
Write-Host $Form.Height

$Form.Visible = $false
[void]$Form.ShowDialog()

标签: powershelluser-interface

解决方案


您可以使用anchors来实现这一点。或者更准确地说,不使用它们

控件默认锚定在表单的左上角,这意味着当表单大小发生变化时,它们与表单左上角的距离将保持不变。如果将控件锚点更改为左下角,则在调整窗体大小时,控件将与窗体的底部和左侧保持相同的距离。

关闭某个方向的锚点将使控件在调整大小时保持在该方向的中心。

注意:通过 VS2015 中的属性窗口关闭锚定可能需要输入 None、None(而不是默认的 Top、Left)


推荐阅读