Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > как изменить BackColor на части панели


Автор: -ser- 6.5.2005, 11:19
как поменять BackColor только в определенном секторе (скажем, прямоугольном) панели а не на всей панели ?

первое что приходит на ум, это рисовать на первой вторую панель с нужным backcolor'ом и трансформировать на нее изображение с первой со всеми вытекающими задачами, если, например, первая скролируемая и т.п.

может можно как-то проще?


Автор: Дрон 6.5.2005, 11:22
Цитата(ser @ 6.5.2005, 12:19)
трансформировать на нее изображение с первой

Что там за изображение?

Можешь обрабатывать событие Paint и зарисовывать нужную область чёрным.

Автор: -ser- 6.5.2005, 11:35
на панели ( по событию Paint ) рисуются графики, пишется текст (т.е. не картинка).
а теперь я хочу выделить (слегка затемнить фон или наоборот ) определенный участок, оставив все нарисованное в этом секторе как есть.

Автор: mr.DUDA 6.5.2005, 12:22
Можно добавить панель поверх данной, выставить ей прозрачный BackColor.
Пример:
Код

panel1.BackColor = Color.FromArgb(100, Color.Black);

Автор: arilou 6.5.2005, 14:48
Привожу пример, как можно выкрутиться. Следущий код должен быть прицеплен к событию Paint у твоей панели:

Код

private void panel1_Paint(object sender, PaintEventArgs e)
{
    // получаем ссылку на объект Grahpics
    Graphics g = e.Graphics;
    // создаем шрифт для вывода текста
    Font textFont = new Font("Arial", 14);
    // создаем Pen для рисования линии
    Pen linePen = new Pen(Brushes.Red, 4);

    // рисуем всякую всячину
    g.DrawString("Hello, world!", textFont, Brushes.Blue, 10, 10);
    g.DrawLine(linePen, 40, 40, 150, 150);
    g.DrawString("Test text", textFont, Brushes.Yellow, 150, 150);

    // создаем цвет, задавая для него прозрачность (альфа-компонент)
    Color transColor = Color.FromArgb(50, Color.BlueViolet);
    // на основе цвета создаем Pen для рисования
    Pen transPen = new Pen(transColor);

    // выводим закрашенный прямоугольник после всего остального
    g.FillRectangle(transPen.Brush, 20, 20, 130, 130);
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)