PowerShell WinForms: эффекты постепенного появления и исчезновения на ярлыках или других объектах, таких как текстовое поле - PullRequest
0 голосов
/ 08 апреля 2019

прежде всего

Я хотел бы заранее поблагодарить вас за то, что поделились каким-либо решением, действительным или нет, на этот вопрос.

У меня большая проблема с попыткой установить эффект затухания для метки в PowerShell Windows Forms.

Да, я знаю, это что-то совершенно конкретное, но я действительно не смог найти способ сделать это, и это сводит меня с ума.

Я мог бы получить этот код на интернет-ресурсах ... Ну, код Visual Basic, который я мог бы преобразовать в C #, но теперь я хочу использовать этот код в своем скрипте powershell, но есть некоторые методы, которые, кажется, быть несовместимым.

Проблема в том, что я не смог найти способ использовать этот метод в powershell:

[MethodImpl(MethodImplOptions.Synchronized)]

Кажется, это метод для языков C #, но я не могу найти ничего похожего в powershell.

У меня были другие коды в моей власти, но некоторые из них так длинны и только в c # не для Windows PowerShell WinForms.

Я уже слышал о том, чтобы код c # в скрипте Powershell добавлял ссылки на файл со структурой:

    #This could call C# code located in other ps1 script
    Add-Type -AssemblyName .\myCodeinC.ps1

Затем мне нужно сохранить код C # следующим образом:

    Add-Type -TypeDefinition @"  "@

Я знаю, и мне тоже нужна вещь, может быть, некоторые дополнительные вызовы для классов C #.

    Export-ModuleMember -Variable _Myvariable1, _Myvariable2 ` 
                -Function Set-MyFunctionCalled1, Get-MyFunctionCalled2 

Ну, как вы видите, у меня есть некоторые идеи по этому поводу, но я все еще довольно новичок в этом ... Просто я не очень хорошо разбираюсь в языковых занятиях

По сути, это новое в PowerShell 5.0

.

В любом случае ... Я буду признателен за любую помощь в этом ...

Я приложил код C #, который мог сделать эффект затухания работы на этом языке, но я чувствую себя потерянным, пытаясь преобразовать его в режим языка powershell.

Еще раз спасибо за любую помощь или чаевые.

C-Sharp код для эффекта затухания.

private Label label3;

private System.Windows.Forms.Timer Timer1
{
    [MethodImpl(MethodImplOptions.Synchronized)]
    get
    {
        return _Timer1;
    }

    [MethodImpl(MethodImplOptions.Synchronized)]
    set
    {
        if (_Timer1 != null)
        {
            _Timer1.Tick -= Timer1_Tick;
        }

        _Timer1 = value;
        if (_Timer1 != null)
        {
            _Timer1.Tick += Timer1_Tick;
        }
    }
}


private Label _Label3;

private Label Label3
{
    [MethodImpl(MethodImplOptions.Synchronized)]
    get
    {
        return _Label3;
    }

    [MethodImpl(MethodImplOptions.Synchronized)]
    set
    {
        if (_Label3 != null)
        {
            _Label3.Paint -= Label3_Paint;
            _Label3.Click -= Label3_Click;
        }

        _Label3 = value;
        if (_Label3 != null)
        {
            _Label3.Paint += Label3_Paint;
            _Label3.Click += Label3_Click;
        }
    }
}

private void Timer1_Tick(object sender, EventArgs e)
{
    Label3.Tag = System.Convert.ToInt32(Label3.Tag) - 10;

    if (System.Convert.ToInt32(Label3.Tag) < 0)
    {
        Label3.Tag = 0;
        Timer1.Stop();
    }

    Label3.Invalidate();
}

private void Label3_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.Clear(Label3.BackColor);
    e.Graphics.DrawString(Label3.Text, Label3.Font, new SolidBrush(Color.FromArgb(System.Convert.ToInt32(Label3.Tag), Label3.ForeColor)), 0, 0);
}

private void Label3_Click(object sender, EventArgs e)
{
    Label3.Tag = 255;
    Timer1.Start();
}

Создание объектов.

Label3 = new Label() { Parent = this, Location = new Point(20, 350), AutoSize = true, Text = "MytextFadingOutWithAClick", Font = new Font("arial", 24, FontStyle.Bold), Tag = 255, BackColor = Color.White, ForeColor = Color.Red };

Создание таймера

Timer1 = new System.Windows.Forms.Timer() { Interval = 50, Enabled = false };
...