powershell - 如何以任何屏幕分辨率使 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()
解决方案
您可以使用anchors来实现这一点。或者更准确地说,不使用它们。
控件默认锚定在表单的左上角,这意味着当表单大小发生变化时,它们与表单左上角的距离将保持不变。如果将控件锚点更改为左下角,则在调整窗体大小时,控件将与窗体的底部和左侧保持相同的距离。
关闭某个方向的锚点将使控件在调整大小时保持在该方向的中心。
注意:通过 VS2015 中的属性窗口关闭锚定可能需要输入 None、None(而不是默认的 Top、Left)
推荐阅读
- php - 如何通过文件显示文章,但不在 URL 中指定?
- excel - 使用 VBA 宏单击/模拟单击
- c# - 为 'Type' 的参数提供默认值会导致“错误 CS1736 'eType' 的默认参数值必须是编译时常量”
- jmeter - 如何为一个用户每秒生成请求数
- angular - 限制用户在 Angular 8 中退出全屏模式
- perl - 迭代从 fetchall_arrayref 返回的结果
- angular - 如何获取在甘特图highcharts-angular中折叠的项目是什么
- c# - 数据库不保存数据?
- python - 如果它什么都不做,我怎么做这个汤?
- python - 试图自动化多页谷歌表单提交。进入哨兵需要帮助