У меня есть библиотека из нескольких "настраиваемых элементов управления". По существу у нас есть собственные кнопки, круглые угловые панели и несколько групповых ящиков с определенной пользовательской краской. Несмотря на "математику" в методах OnPaint, элементы управления довольно стандартизированы. В большинстве случаев все, что мы делаем, это рисовать округлые углы и добавлять градиент к фону. Мы используем GDI + для всего этого.
Эти элементы управления одобрены (и очень красивы в соответствии с нашими клиентами), однако, несмотря на DoubleBuffer, вы можете увидеть некоторую перерисовку, особенно когда есть 20 ++ кнопок (например) в той же форме. При загрузке формы вы видите рисунок кнопок... что раздражает.
Я уверен, что наши кнопки не самые быстрые на земле, но мой вопрос: если двойной буфер "on", не все, что перерисовывается в фоновом режиме, а подсистема Windows должна показывать результаты "мгновенно" "?
С другой стороны, если существует "сложный" цикл foreach, который будет создавать метки, добавьте их на панель (с двойной буферизацией) и измените их свойства, если мы приостановим работу панели перед циклом и возобновим макет панели, когда цикл закончился, не должны ли все эти элементы управления (метки и кнопки) появляться "почти мгновенно"? Это не так, вы можете увидеть заполняемую панель.
Любая идея, почему этого не происходит? Я знаю, что это сложно оценить без примера кода, но это сложно воспроизвести. Я мог бы сделать видео с камерой, но поверьте мне, это не так быстро:)