Trackback управляет альфа-значением цвета

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

private void trackAlpha_ValueChanged(object sender, EventArgs e) {
    colorPreview.BackColor = Color.FromArgb(trackAlpha.Value, colorDialog.Color.R, colorDialog.Color.G, colorDialog.Color.B);
}

Оказывается, прокрутка альфы никак не повлияет на предварительный просмотр.

Любые идеи о том, почему это может происходить?


person P1C Unrelated    schedule 16.04.2013    source источник
comment
Это WinForms, WPF или что-то еще?   -  person Dan    schedule 17.04.2013
comment
Это форма. Простите, надо было включить это.   -  person P1C Unrelated    schedule 17.04.2013
comment
Я добавил тег для вас.   -  person Dan    schedule 17.04.2013
comment
Поддерживает ли winforms прозрачность?   -  person Federico Berasategui    schedule 17.04.2013
comment
Это так, я использовал его в другом своем приложении, которое имеет ту же функцию - изменить прозрачность заднего цвета текстового поля. Я скопировал и вставил этот точный код в этот новый проект и изменил необходимые вещи, но безуспешно.   -  person P1C Unrelated    schedule 17.04.2013


Ответы (1)


WinForms Control поддерживает альфа-канал, но не по умолчанию. Для элемента управления, который вы хотите иметь полупрозрачный цвет фона, вы должны вызвать SetStyle:

this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);

Метод защищен, поэтому вам придется наследовать от нужного элемента управления и вызывать его в конструкторе или что-то в этом роде. Этот элемент управления будет тем, на что ссылается colorPreview.

person Dan    schedule 16.04.2013
comment
Извините за невежество, но должен ли я использовать его в части public Form1() и просто использовать метод ColorFromArgb, как обычно, в разделе слайдов трекбара? - person P1C Unrelated; 17.04.2013
comment
@P1CUnrelated Смотрите мое редактирование: этот элемент управления будет тем, на что ссылается colorPreview. - person Dan; 17.04.2013
comment
Ну, еще раз простите мое невежество. Я поместил код, который вы показали, только в public Form1() часть кода, так как не вижу связи между ним и colorPreview. Опять же, извините, я был бы очень признателен за второе объяснение. - person P1C Unrelated; 17.04.2013
comment
Я предполагаю, что colorPreview относится к элементу управления. Каким бы ни был тип этого элемента управления, вам нужно будет создать свой собственный тип, который наследуется от него, и вызывать SetStyle в конструкторе этого элемента управления. - person Dan; 17.04.2013
comment
Да, это действительно так. Это текстовое поле с именем colorPreview, фоновый цвет которого я пытаюсь изменить. Я поместил фрагмент, который вы мне показали, на трекбар, который должен изменить прозрачность текстового поля, но безуспешно. Извините, что заставил вас объяснить мне все это, я действительно больше не знаю, что происходит. - person P1C Unrelated; 17.04.2013
comment
Создайте дочерний класс TextBox, который вызывает SetStyle в конструкторе, а затем измените colorPreview на экземпляр этого типа, а не TextBox. - person Dan; 17.04.2013