Как очистить графику на прозрачном элементе управления в окнах форм
-
05-07-2019 - |
Вопрос
Итак, я довольно незнаком с разработкой форм Windows.
Я пытаюсь создать " эй, я занят чем-то занимаюсь " компонент, который просто вращается вокруг формы. Я хочу, чтобы этот элемент управления был временным и рисовал поверх любых других элементов управления. Класс наследуется непосредственно от Control.
Итак, у меня есть это в конструкторе:
SetStyle(ControlStyles.Opaque, true);
и это:
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ExStyle |= 0x20;
return parms;
}
}
Это дает мне элемент управления, который будет рисовать поверх других элементов управления.
Теперь моя проблема заключается в следующем. Я перекрашиваю элемент управления несколько раз в секунду, чтобы создать плавную анимацию. Однако я не могу понять, как очистить то, что было нарисовано в предыдущем кадре. Использование e.Graphics.Clear (Color.Transparent)
в OnPaint
делает весь элемент управления черным.
Есть ли способ просто очистить нарисованное содержимое элемента управления?
Я заметил, что изменение размера элемента управления очистит фон.
То, что не работает
<Ол>Решение
Хорошо, я нашел решение здесь: http://www.bobpowell.net/transcontrols.htm
Родительские элементы управления должны быть недействительными, чтобы сохранить прозрачный фон.
Другие советы
Возможно, вам придется переопределить OnPaintBackground, представленное в этой статье: http://saftsack.fs.uni-bayreuth.de/~dun3/archives/creating-a-transparent-panel-in-net/108.html р>
Вам также может понадобиться аннулировать элемент управления, когда его необходимо очистить, чтобы вызвать OnPaintBackground.