Nano Hash - криптовалюты, майнинг, программирование

WinForms мерцает при загрузке в Windows 8.1

У меня возникли некоторые эффекты мерцания, когда мои формы Windows Forms изначально загружались в Windows 8.1.

Сначала я попробовал несколько решений, связанных с включением DoubleBuffered, но, похоже, это не решило проблему. Позже я наткнулся на решение ниже, которое, по словам многих, устранило все их проблемы. Однако, когда я попробовал исправить это на своем компьютере с Windows 8.1, теперь он мигает черным квадратом.

Для дальнейшего исследования я попробовал пример кода из приведенной ниже ссылки MSDN. Однако это также показывает черный ящик при загрузке формы. Я попытался повозиться с визуальными настройками Windows 8.1 в «Дополнительные параметры системы» -> «Дополнительно» -> «Параметры производительности» -> «Визуальные эффекты», чтобы узнать, повлияли ли на это Aero или аналогичные функции прозрачности, но я по-прежнему появляется мигающий черный ящик.

Похоже, что ни один из комментариев в различных ветках по этому «исправлению» не был недавним. Мне было интересно, должно ли это «исправление» применяться к Windows 8 / 8.1, и если есть что-то еще, я могу попытаться получить форму и ее элементы управления, чтобы все они отображались одновременно, без какого-либо мерцания.

protected override CreateParams CreateParams {
  get {
     CreateParams cp = base.CreateParams;
     cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
     return cp;
  }
} 

https://social.msdn.microsoft.com/Forums/windows/en-US/aaed00ce-4bc9-424e-8c05-c30213171c2c/flickerfree-painting?forum=winforms

Как исправить мерцание в пользовательских элементах управления


  • Что вы делаете, когда форма загружается? Какой-то код, который был бы хорош 20.03.2015
  • Пример кода в сообщении msdn может воспроизвести проблему (я думаю, что он создает кучу кнопок). В основном, когда в форме много элементов управления, они могут вызвать мерцание формы при загрузке, мой код менее радикален, чем код msdn, поскольку у меня меньше элементов управления в моей форме, но такая же проблема возникает у меня. Я думаю, что сообщение msdn, возможно, устранило проблему для более старых операционных систем, но я не вижу упоминания о том, что кто-то тестировал его на Windows 8 / 8.1. 20.03.2015
  • У меня меньше элементов управления в моей форме. Значит, сколько ?? Создано где? до или после this.ResumeLayout(false); this.PerformLayout(); дизайнера? 20.03.2015
  • Всего 4 или 5 элементов управления, но в форме есть некоторые сторонние элементы управления, которые имеют параметры тематики, которые регулируют цвет задней части формы и ее элементов управления, что может сделать ее немного тяжелой. Я применяю различные параметры тематики во время выполнения, поэтому я вижу мерцание, когда форма меняется, например, с серого на темно-серый фон, или если я введу приведенный выше код, моя форма сначала будет отображаться как черный ящик. Если бы я мог заставить образец кода в ссылке msdn работать без мерцания или черного ящика на win8.1, то я уверен, что то же исправление будет работать с моим кодом. 20.03.2015

Ответы:


1

Я смог получить свою форму и все ее элементы управления для одновременного отображения, используя приведенный ниже код:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Shown += Form1_Shown;
        this.Opacity = 0;
        SampleExpensiveCreateControlOperation();
    }

    private void SampleExpensiveCreateControlOperation()
    {
        for (int ix = 0; ix < 30; ++ix)
        {
            for (int iy = 0; iy < 30; ++iy)
            {
                Button btn = new Button();
                btn.Location = new Point(ix * 10, iy * 10);
                btn.BackColor = Color.Red;
                this.Controls.Add(btn);
            }
        }
    }

    private void Form1_Shown(object sender, EventArgs e)
    {
        this.Refresh();
        this.Opacity = 1;
    }

}
23.03.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..