none
Мерцание RRS feed

  • Вопрос

  • Здравствуйте, помогите решить проблему с мерцанием. Все мерцает, когда использую прозрачные картинки, или даже когда нажимаю на клавишу ALT (один раз).
    В Документации почитал, что надо включить двоюную буферизацию, как это делается я не понял.

    Допустим, у меня приложение, панель вместо кнопки. При наведение курсора и отвода задний цвет (backcolor) панеля меняется. А в панели прозрачная картинка. И, вообще, есть какие-нить статьи по созданию красивых, необычных кнопок, панелей и т.д.?

    Заранее благодарю!
    • Перемещено Siddharth Chavan 1 октября 2010 г. 22:03 MSDN Forums Consolidation (От:Visual C#)
    11 ноября 2009 г. 13:06

Ответы

Все ответы

  • Вот подробная, вполне понятная документация:
    Двойная буферизация графики
    Практическое руководство. Создание непрямоугольной кнопки


    + Может заинтересует:
    Как сделать окно произвольной формы
    Хорошее описание есть в книге "C#. Советы программистам", создания окна произвольной формы(стр 123), создание элемента управления произвольной формы(стр 146).
    • Предложено в качестве ответа I.VorontsovModerator 11 ноября 2009 г. 13:27
    • Помечено в качестве ответа Moiseev Stanislav 23 ноября 2009 г. 7:49
    11 ноября 2009 г. 13:19
    Модератор
  • Как я понял, DoubleBuffered = true я должен писать везде, где используется компонент с прозрачным изображением?

    Например, у меня отдельный класс-панель, для своей кнопки - myButton;
    И форма Form1.

    значит, я пишу 

    //myButton
    {
    ...
    public myButton()
    {
    this.DoubleBuffered = true;
    }
    ...
    }

    //Form1
    {
    ...
    public Form1()
    {
    this.DoubleBuffered = true;
    }
    ...
    }

    А вообще, если много раз использовать Двойную буфферизацию что я теряю, в смысле ресурсов много будет требовать?)
    12 ноября 2009 г. 9:40
  • Указывать это свойство нужно только для тех контролов, поверхность которых вы хотите перерисовывать с помощью двойной  буферизации. На счёт ресурсов, конечно какую то часть памяти придётся потратить на создание буфера(Я думаю изменения будут не значительны. Попробуйте написать два приложения одно без, другое с использованием дб, и посмотрите на разницу в используемых ресурсах). Используйте только там где это необходимо.
    • Предложено в качестве ответа I.VorontsovModerator 12 ноября 2009 г. 10:18
    • Помечено в качестве ответа Moiseev Stanislav 23 ноября 2009 г. 7:48
    12 ноября 2009 г. 10:17
    Модератор