Нужно, чтобы при нажатии на button
появлялась panel
поверх всех компонентов. Panel
должна быть чёрного цвета и полупрозрачная. Как это сделать?
Могу предложить следующий вариант. Накидываем компонентов на форму, затем закидываем Panel
в нужное место. Затем создаем отдельный класс, который наследует Panel
, он нам понадобится для дальнейшей работы:
[System.ComponentModel.DesignerCategory("")] // чтобы дизайнер формы работал
public class ExtendedPanel : Panel
{
private const int WS_EX_TRANSPARENT = 0x20;
public ExtendedPanel()
{
SetStyle(ControlStyles.Opaque, true);
}
private int _opacity; // прозрачность
public int Opacity
{
get { return this._opacity; }
set
{
if (value < 0 || value > 100) // процентов от 0 до 100
throw new ArgumentException("Значение должно быть от 0 до 100");
this._opacity = value;
}
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle = cp.ExStyle | WS_EX_TRANSPARENT;
return cp;
}
}
protected override void OnPaint(PaintEventArgs e)
{
// Color.Black - вот он наш черный цвет панели полупрозрачный
using (var brush = new SolidBrush(Color.FromArgb(this._opacity * 255 / 100, Color.Black)))
{
e.Graphics.FillRectangle(brush, this.ClientRectangle);
}
base.OnPaint(e);
}
}
Переходим в дизайнер формы, там где определены наши компоненты. Здесь нам нужно в двух местах изменить значение нашего panel1
, а именно в методе InitializeComponent
делаем так:
this.panel1 = new ExtendedPanel();
И в объявлении полей класса Form1
тоже ставим свой тип:
private ExtendedPanel panel1;
В конструктор формы прописываем следующее:
public Form1()
{
InitializeComponent();
panel1.Hide(); // скрываем нашу панель изначально
}
Добавляем на форму кнопку и вешаем на нее обработчик:
private void button1_Click(object sender, EventArgs e)
{
panel1.BringToFront(); // на первый план
panel1.Opacity = 50; // задаем прозрачность в процентах
panel1.Show(); // показываем
}
Теперь, после нажатия на кнопку будет полупрозрачная панель.
Метод Color.FromArgb (Int32, Color)
Создает цвет структуры из
указанного Color
, с новым определенным значением alpha
. Чтобы
создать непрозрачный цвет, установите alpha
до 255. Чтобы создать
полупрозрачный цвет, установите alpha
любое значение от 1 до 254.
Метод Control.BringToFront
помещает элемент управления в начало
z-порядка. Если элемент управления является дочерним для другого
элемента управления, дочерний элемент управления перемещается в начало
z порядка.
ControlStyles.Opaque
- если присвоено значение true
, элемент
управления отображается непрозрачным, а фон не закрашивается.
Ссылка на источник: Any trick to use opacity on a panel in Visual Studio Window Form?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, задача написать регулярное выражение для выборки данных следующим образом: в результате должны остаться правильные IP-адреса...
Собственно есть listview, как сделать сортировку по данным в столбцах? Есть столбец процессов - нужно по нажатию на колонку, сделать сортировку...
При запуске проекта появляется окно со следующей ошибкой "ошибка при попытке определить идентификатор процесса dotnetexe", запускаю на IIS в 17 студии
Есть таблица DataGridView с контактамиКаждый столбец - способ связи (телефон, почта, ваттсапп ect)