Платформа.NET « C# прозрачность контролов, наложенных друг на друга

Здравствуйте.
Приложение Windows Forms, C#. Два контрола, у обоих свойство BackColor: transparent. Один контрол является текстом, другой изображением. Изображение представляет собой png с градиентом, где градиент из прозрачного уходит в белый цвет. Должен получаться красивый эффект, если текста много, он как-бы растворяется. Но вместо этого контрол, в котором находиться png просто заливается фоновым цветом (белым, если transparent).

Вопрос: как все починить? Гугле дает советы по пиксельной отрисовке png изображения, неужели нет ничего проще? (ну там галочку какую-нибудь отметить, как при написании текста на aero glass, или свойство какое приписать)

Вот решение с отрисовкой, там же картинки, сразу все становится ясно: http://www.bobpowell.net/transcontrols.htm

1 ответов


Как раз недавно сталкивался с подобным. Отработка прозрачности зависит от того, кто является Parent вашего контрола.

Насколько понимаю сейчас Parent у них одинаковый. Попроуйте добавить label к картинке.

Что-то вроде:



imgControl.Controls.Add(label);

label.bringToFront();
 

У меня тоже самое: поставил прозрачный label на картинке, но прозрачность здесь не помогает.

Тогда вырезал кусочек картинки, где должен мой текст находиться, и положил его как background of label, Вы так пробовали? В дизайне всё чудесно, в runtime - мой текст виден на цвете подложки формы (т.е. просто на белом, вместо градиента голубого).

К сожалению, так и не решил проблему. Просто написал мой текст (а это был номер версии на заставке приложения) в footer формы.

--
Виктор (Dbrnjh)


Проще только если использовать WPF. В WinForms придётся попиксельно реализовывать.



<style type="text/css">
h1 {
  font: 330%/100% "Lucida Grande";
  position: relative;
  color: gray;
}
h1 span {
  background: url(gradient-white-2.png) repeat-x;
  background-position: bottom;
  position: absolute;
  display: block;
  width: 100%;
  height: 58px;
}
</style>
<h1><span></span>Градиент</h1>
 
amway24.ru/test/gradientText/index.htm
так ?