Пользовательский элемент управления с прозрачной настраиваемой графикой: становится черным во время выполнения

У меня есть настраиваемый графический пользовательский элемент управления, который поддерживает прозрачный фон. Во время проектирования пользовательский элемент управления отображается правильно. Однако во время выполнения задний цвет становится черным.

Диаграмма во время выполнения

Я искал решение stackoverflow, но большинство статей относятся к WPF или контроллерам. :(

Что я пробовал:

Я попытался использовать пользовательский элемент управления с прозрачной панелью для размещения графического элемента управления пользователя. Это ничего не изменило. Я установил графический пользовательский элемент управления на использование прозрачной панели в качестве родительского элемента, ничего.

Есть ли у кого-нибудь какие-либо сведения о том, как этого не допустить? Спасибо.

Обновление 1: если я просто добавлю графический пользовательский элемент управления в форму и запустил приложение, прозрачность все равно будет работать. Кажется, это проблема, когда он начинает строить график. Я пробовал следующие решения.

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams parameters = base.CreateParams;
            parameters.ExStyle |= WS_EX_TRANSPARENT;
            return parameters;
        }
    }

    internal const int WS_EX_TRANSPARENT = 0x00000020;

Я также пробовал добавить:

        this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        this.SetStyle(ControlStyles.OptimizedDoubleBuffer, false);

person frostbyte    schedule 20.11.2018    source источник
comment
comment
У меня никогда не было проблем с прозрачностью формирования круговых полос выполнения. Просто когда они пересекались. Это прямо на форме.   -  person frostbyte    schedule 20.11.2018
comment
Ну а что по-другому?   -  person LarsTech    schedule 20.11.2018
comment
Связано ли это с вашим предыдущим вопросом? transparentpanel usercontrol что это значит? Это CustomControl или UserControl (разные вещи)? Вы когда-нибудь устанавливаете BackColor на Color.Transparent? Разместите код, связанный с рисунком.   -  person Jimi    schedule 20.11.2018
comment
I set the graphing usercontrol to use the transparentpanel as the parent Полагаю, это ваша проблема. WinForms никогда не имеет истинной прозрачности, просто копируя фон родительского контейнера.   -  person LarsTech    schedule 20.11.2018
comment
Спасибо за помощь, ЛарсТек и Джими. Оказалось что-то глупое. :)   -  person frostbyte    schedule 20.11.2018


Ответы (1)


У меня была аналогичная проблема. Я поискал в Google и нашел свой ответ. Я не знаю вашего кода для вашего настраиваемого элемента управления, но обратите внимание на такую ​​строку в своем OnPaint:

e.Graphics.Clear(Color.Transparent);

Функция «Очистить», используемая с цветом «Прозрачный», не сделает ваш настраиваемый элемент управления прозрачным. По сути, он закрашивает цвет прозрачным по всему вашему контролю. Это может привести к довольно неприятным результатам.

person Alexandra    schedule 20.11.2018
comment
В этом и заключалась проблема. Ух ты. Большое вам спасибо за вашу помощь. Проблема решена. - person frostbyte; 20.11.2018