Как добиться прозрачного Backcolor на оригинальном управлении WinForms?

StackOverflow https://stackoverflow.com/questions/4339121

Вопрос

Я собираюсь потерять свой разум здесь.
Почему флажок не сочетается с тем, что находится за этим?
Вопрос относится ко всем контролям WinForms, но я использую это в качестве примера.

Одна картинка стоит тысячи слов:

alt text

И еще несколько слов:
Что за CheckBox окрашены PictureBoxэс и а. Button.
То CheckBoxС. BackColor установлен в Transparent. Отказ Но как-то это решает, что это означает, что он должен поделиться BackColor из содержащего Form (Это его идею о иллюзии прозрачности?).

Это невозможно в WinForms? Я мог покляться, что сделал это раньше.

ОБНОВИТЬ:
Я только что попробовал это:
В этой форме установите CheckBoxС. BackColor к Transparent, Затем измените BackColor из содержащего Form к другому цвету и CheckBox будет соответствовать этому BackColor. Отказ Что за.......?

Это было полезно?

Решение

Боб Пауэлл написал превосходно Статья о прозрачном контроле. Проверьте это:

http://www.bobpowell.net/transcontrols.htm.

Другие советы

Это побочный эффект управления Windows Windows. Окно отвечает за сам оформление, на это позаботится о том, что методы OnPaintBackground и Onpaint позаботятся.

Эта модель рендеринга не поддерживает прозрачность. Существует поддержка истинной прозрачности с использованием слоистых окон. Это реализуется видеоадаптером, Windows использует его аппаратный накладной. Но это только работает только для окон, а не детских окон. Обратите внимание на форму. Парасметрии и формы.

Там есть частичная поддержка прозрачности через трюк. Контроль может подделать его, задавая родительское окно сначала нарисовать себя внутри окна управления. Это производит фоновые пиксели, то он может затем нарисовать на вершине этого. Установка недвижимости Backcolor для Color.TransParent позволяет этому трюку для контроля, которые поддерживают это. Все классы производных кнопок ButtonBase. Но не контролирует, которые являются обертками для нативных управлений Windows.

«Запрашивание родительского окна» - это то, где недостаток в этом трюке становится видимым на вашем экране. Вы видите форму пикселей. Стекирование эффектов не работают, он никогда не рассматривает никакого посредника в Z-порядке, только родитель. Это исправлено, но очень Уродливый, есть артикул KB, которая показывает код.

Также заметным является то, что WPF не имеет этого ограничения. Управления не являются окнами, они оказывают, рисовали себя на вершине родителя. Слои краски. Прозрачность теперь тривиальна, просто не рисовать.

Можете ли вы установить Backcolor флажок вручную в цвет, который вы хотите? (Значение в рисунке позади него)

«Прозрачный» может означать что-то отличное от того, что вы хотите MS.

Кроме того, попробуйте изменить Zorker из рисунков (довести перед спереди) и посмотрите, изменяет ли это базовый цвет флажок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top