Powershell GUI. Изменение размера изображения (уменьшение, увеличение размера) и отображение его в $PictureBox
Уважаемые пользователи форума, помогите пожалуйста, со следующим вопросом. Я пытаюсь создать приложение с графическим интерфейсом в Powershell. Так как я новичок в программировании, то решился обратиться на форум за помощью. Суть приложения заключается в вводе названия автомобиля в $InputBox.text и последующим отображении эмблемы автомобиля в $PictureBox.
Папка, в которой будут находиться изображения эмблем автомобилей, будет содержать много изображений разного размера.
При этом я хочу, чтобы программа отображала изображение в $PictureBox строго заданного размера: ширина 200, высота 110.
Если изображение больше по ширине - 200 и высоте - 110, я хочу, чтобы программа сжала его до размеров ширина - 200 и высота - 110 и отобразила изображение в $PictureBox.
Если изображение меньше ширины - 200 и высоты - 110, я хочу, чтобы программа растянула его до размеров ширина - 200 и высота - 110 и отобразила изображение в $PictureBox.
На скриншоте ниже показано, как программа выглядит сейчас.
Заранее благодарю за помощь.
Add-Type -assembly System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Size = New-Object System.Drawing.Size(500,500)
$form.Text = 'Сars'
############################################ Label ############################################
$Label = New-Object System.Windows.Forms.Label;
$Label.Text = "Cars emblem";
$Label.Location = New-Object System.Drawing.Point(280,30);
$Label.ForeColor = "#3009f1"
$Label.Font = "Microsoft Sans Serif,14"
$Label.AutoSize = $true;
$form.Controls.Add($Label);
$Label_2 = New-Object System.Windows.Forms.Label;
$Label_2.Text = "Cars name";
$Label_2.Location = New-Object System.Drawing.Point(10,10);
$Label_2.ForeColor = "#3009f1"
$Label_2.Font = "Microsoft Sans Serif,14"
$Label_2.AutoSize = $true;
$form.Controls.Add($Label_2);
############################################ InputBox #########################################
$InputBox = New-Object System.Windows.Forms.TextBox
$InputBox.Location = New-Object System.Drawing.Size(10,40)
$InputBox.Size = New-Object System.Drawing.Size(200,35)
$InputBox.Font = New-Object System.Drawing.Font("Lucida Sans Typewriter",18,[System.Drawing.FontStyle]::Regular)
$Form.Controls.Add($InputBox)
############################################ PictureBox ############################################
$PictureBox = New-Object System.Windows.Forms.PictureBox
$PictureBox.Location = New-Object System.Drawing.Point(270,70)
$PictureBox.size = New-Object System.Drawing.Size(200,110)
$PictureBox.BackColor = "#d2d2d2"
$form.Controls.add($PictureBox)
############################################ Function ############################################
function emblem {
$image = [System.Drawing.Image]::Fromfile('C:\cars\' + $InputBox.text + '.png')
$pictureBox.Image=$image
#$PictureBox.Load=$image
}
######################################################### Button #########################################################
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(10,90)
$Button.Size = New-Object System.Drawing.Size(110,80)
$Button.Text = "Display
picture"
$Button.BackColor = "#86bb6f"
$Button.Font = "Microsoft Sans Serif,14"
$Button.Add_Click({emblem})
$Form.Controls.Add($Button)
$form.ShowDialog()
Ответы (1 шт):
Для изменения отображения изображений в PictureBox нужно использовать свойство SizeMode, которое принимает значение перечисления PictureBoxSizeMode.
Подходящие варианты:
StretchImage
(1) – Изображение в окне PictureBox вытягивается или сужается, чтобы в точности соответствовать размеру PictureBox.Zoom
(4) – Размер изображения увеличивается или уменьшается, сохраняя пропорции размеров.
# Достаточно будет добавить следующую строку:
$PictureBox.SizeMode = [System.Windows.Forms.PictureBoxSizeMode]::Zoom
# Так же можно просто указать строку или число значения перечисления:
$PictureBox.SizeMode = 'Zoom'