Как перенести все элементы управления на bitmap? C#

87
03 марта 2022, 02:20

Проблема следующая: Я считываю все контролы на форме, затем перевожу их в картинку. Дело в том, если контрол лежит на контроле, пример: На picturebox лежат button или любые другие компоненты, то они не переносятся в картинку, то есть перенесётся тот самый picturebox на котором лежат контролы, а вот тот самый button просто пропадёт.

    private void pictureBox6_Paint(object sender, PaintEventArgs e)
    {
        Control control = (Control)sender;
        Control parent = control.Parent;
        Bitmap behind = new Bitmap(parent.Width, parent.Height);
        foreach (Control c in parent.Controls)
            if (c != control)
                c.DrawToBitmap(behind, c.Bounds);
        float opacity = 0.8f;
        Color bgColor = Color.FromArgb(Convert.ToInt32(255 * opacity), 0, 0, 0);
        Graphics g = Graphics.FromImage(behind);
        g.FillRectangle(new SolidBrush(bgColor), 0, 0, parent.Width, parent.Height);
        e.Graphics.DrawImage(behind, -control.Left, -control.Top);
    }

Собственно мне это нужно для затемнения, но такового затемнения в WinForms нет, приходится имитировать его, помогите пожалуйста.

READ ALSO
Привязка данных в Xamarin.Forms

Привязка данных в Xamarin.Forms

В приложении на XamarinForms необходимо сначала получить данные с сервера, а потом используя их нарисовать FlexLayout

95
Как "за кулисами" реализуется интернет-поток?

Как "за кулисами" реализуется интернет-поток?

Ковыряя ASPNET проект я задумался, а как за кулисами реализуются интернет-потоки

98
Как создать ассоциативный массив в C#?

Как создать ассоциативный массив в C#?

Как можно создать ассоциативный массив в c#? В других языках например как js и php это делается легко, но в С# так не работает

97