PowerShell NET формы установить прозрачный фон - PullRequest
1 голос
/ 16 марта 2019

Я хочу установить прозрачный фон в форме NET, созданной скриптом powershell:

Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms

$Form = New-Object system.Windows.Forms.Form

$Form.Location = New-Object System.Drawing.Point(0, 0);
$Form.StartPosition = "manual"
$Form.AutoSize = $true;

$Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::None

$Form.Text = "Sample Form"
$Font = New-Object System.Drawing.Font("Times New Roman",18,[System.Drawing.FontStyle]::Italic)
$Form.Font = $Font
$Label = New-Object System.Windows.Forms.Label
$Label.Text = "This form is very simple."
$Label.AutoSize = $True
$Form.Controls.Add($Label)

$Form.ShowDialog()

pause

Я хотел бы установить цвет фона как прозрачный, поэтому я должен добавить:

$Form.BackColor = [System.Drawing.Color]::FromName("Transparent")

Но, конечно, это выдает ошибку о том, что «Элемент управления не допускает прозрачный фоновый цвет».Это потому, что (я думаю?) Я должен использовать setStyle с SupportsTransparentBackColor и UserPaint , но я не знаю, как установить его стиль ... Ядумал что-то вроде этого:

$Form.SetStyle([System.Windows.Forms]::SupportsTransparentBackColor, true)
#or
$Form.SetStyle([System.Windows.Forms]::SupportsTransparentBackColor, $true)
#or
$Form.SetStyle= ([System.Windows.Forms]::SupportsTransparentBackColor, true)
#or
$Form.SetStyle= ([System.Windows.Forms]::SupportsTransparentBackColor, $true)

но он говорит, что SetStyle не существует для $ Form.Как я должен правильно включить прозрачный фон?Кстати я уже видел эти посты \ источники: 1st ; второй ; 1021 * третий *; четвёртый ; 5th ;
Я не хочу использовать "TransparencyKey", потому что он оставляет этикетку с некоторыми цветными границами ...
РЕДАКТИРОВАТЬ 17/03/2019
@ postanote связал два поста, где я обнаружил, что могу использовать:

$Form.AllowTransparency = $true
#and (but it doesn' work)
$Form.WindowStyle = $true

Я также обнаружил, что с помощью $Form | Format-List -Property * я могу получить все свойства формы, и я не могничего похожего на WindowStyle или SetStyle ...

1 Ответ

0 голосов
/ 17 марта 2019

Обновление для OP --- Удален предыдущий ответ на основе вашего ответа.

Я думаю, что это неправильно поняли ... Я не хочу устанавливать его непрозрачность (что также влияет на childs), я хотел бы установить непрозрачность только для родительское ИЛИ, если возможно, установить фон для данных ARGB $ Form.BackColor = [System.Drawing.Color] :: FromArgb (80,15,78,2) и текст по-прежнему должен быть непрозрачным черным

После дополнительных T & E форма не поддерживает установку прозрачного объекта на объекте from do. Обозреватель объектов в таких инструментах, как Sapien PowerShell Studio, не раскрывает его вообще, и не имеет никаких средств для этого.

После того, как вы покопались на каком-то форуме C / C ++, эти слова подтвердились, он никогда не был добавлен в базовую / стандартную WinForm из всего, что они могут догадаться. То, как другие сообщили об этом, использует нижеприведенное или подобное. Опять же не родная вещь PowerShell, а базовое ограничение WinForm.

private void Form1_Load(object sender, EventArgs e) 
{ 
    //Hide our form from user  
    this.SetStyle (ControlStyles.SupportsTransparentBackColor, true); 
    this.TransparencyKey = Color.FromKnownColor(KnownColor.Control);
    this.Update();
}

Посмотрите это видео - опять-таки не особенность PowerShell, просто то, что нужно сделать, чтобы WinForms получил этот эффект.

Создание прозрачной формы в окне в приложении Windows Form

В общем, ИМХО, я бы перешел на WPF, если вам нужен такой контроль. Кроме того, отрасль признала, что WinForms считается устаревшей. WPF - это место действия / действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...