Путь разработчика    

Используйте двойную буферизацию, чтобы предотвратить мерцание в PictureBox в C#

Пример Использование двойной буферизации для предотвращать мерцание при рисовании на C# показывает, как сделать форму, использующую двойную буферизацию для уменьшения мерцания. Вместо того, чтобы рисовать все на экране по мере его создания, форма рисует изображение в памяти и отображает результат только после завершения изображения.

Но что, если вы хотите только удвоить буфер PictureBox, а не всю форму? Элемент PictureBox не имеет свойства DoubleBuffered, как это делает форма. (Хотя, возможно, так и должно быть.)

К счастью, достаточно просто обеспечить двойную буферизацию. Просто создайте Bitmap в памяти и нарисуйте его. По завершении установите свойство PictureBox Изображение в Bitmap. Это не только предотвращает мерцание, но также позволяет PictureBox автоматически перерисовывать себя, когда это необходимо, без написания обработчика событий Paint.

К счастью, достаточно просто обеспечить двойную буферизацию. Просто создайте Bitmap в памяти и нарисуйте его. По завершении установите свойство PictureBox Изображение в Bitmap. Это не только предотвращает мерцание, но также позволяет PictureBox автоматически перерисовывать себя, когда это необходимо, без написания обработчика событий Paint.

...

Метод DrawCurves, показанный в следующем коде, рисует две кривые бабочки этого примера. PictureBox слева использует двойную буферизацию, а в правой - нет.

Python

Сначала код очищает элементы управления PictureBox. Обычно, когда вы дублируете буфер, вы пропускаете этот шаг. Вместо этого вы просто создаете новый Bitmap, а затем отображаете его, заменяя все, что отображалось ранее.

Далее код создает Bitmap и связанный с ним объект Graphics и вызывает метод DrawButterfly, чтобы нарисовать на нем кривую бабочки. Он устанавливает первый PictureBox \'Image свойство в Bitmap и обновляет его. В этом примере вы увидите кратковременное мерцание. Если вы не очистите PictureBox, вы ничего не заметите.

Код заканчивается вызовом DrawButterfly, чтобы нарисовать новую кривую бабочки на втором PictureBox. Он использует Graphics объект для PictureBox, поэтому пользователь видит изображение, когда программа рисует его, и есть много мерцания.

Источник: http://csharphelper.com/blog/2014/11/use-double-buffering-to-prevent-flicker-in-a-picturebox-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Почему мне нужно переопределить методы equals и hashCode в Java?

В Java каждый объект имеет доступ к методу equals(), поскольку он наследуется от класса Object. Если два объекта равны в соответствии с методом equals (Obj...

02 07 2020 22:48:13

Добавить варианты ComboBox во время выполнения в C#

В этом примере вы можете добавить ComboBox варианты, когда пользователь выбирает их во время выполнения. Чтобы отслеживать выбор для будущего использования...

01 07 2020 21:48:24

В чем разница между созданием String как new() и literal?

Оба выражения дают объект String, но между ними существует тонкая разница. Когда вы используете новую строку («Hello World !!»); , он явно создает новый и...

30 06 2020 13:49:53

HTML5 для веб-дизайнеров (Кит Джереми)

В HTML5 появилось много интересных тэгов, в том числе поддержка аудио и видео-файлов. Теперь вам не надо тратить время на установку плагинов для проигрыван...

29 06 2020 8:16:37

Как создать копию объекта в Python?

Вы можете скопировать объект в Python с помощью метода deepcopy: «=» - это назначение другой ссылки на тот же объект в памяти. Глубокая копия создает целый...

28 06 2020 19:56:21

Qt 5.3. Профессиональное программирование на C++ (Шлее М.)

  Книга посвящена разработке приложений для Windows, Mac OS X и Linux с использованием библиотеки Qt версии 5.3. Подробно рассмотрены возможности, предостав...

27 06 2020 21:43:43

Числовые выражения, введенные пользователем в C#

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

26 06 2020 0:48:23

Как определить, существует ли файл или каталог в C#

Обычно лучше проверить, существует ли файл или каталог, прежде чем пытаться получить к нему доступ. Например, если вы пытаетесь прочитать файл, который не...

25 06 2020 4:42:44

Получить системные показатели в C#

Функция API GetSystemMetrics возвращает системные метрики, значения, которые дают размеры, используемые системой, такие как размер значков по умолчанию и т...

24 06 2020 23:54:28

Как загрузить и установить Python

Python - очень популярный язык программирования, который можно использовать для создания веб-сайтов, игр, научного программного обеспечения, графики и мног...

23 06 2020 19:17:28

Воспроизведение аудио файлов в C#

Класс System.Media.SoundPlayer позволяет вам легко воспроизводить WAV-файл, сохраненный как аудио-ресурс. В этом примере сначала добавьте WAV-файл в качест...

22 06 2020 8:56:30

Что такое undefined x 1 в JavaScript?

Часть стандарта ECMA, JavaScript-консоли будут отображать объекты в виде массивов, когда объекты похожи на массивы. Например: для объекта, содержащего стро...

21 06 2020 10:37:25

Самоучитель Java (Хабибуллин И.Ш)

Самоучитель написан на основе материала лекций читаемых автором для студентов первого курса. Изложены практические приемы использования как традиционных, т...

20 06 2020 20:49:47

Отправлять распечатку непосредственно на конкретный принтер в C#

Код устанавливает имя принтера, а затем вызывает метод PrintDocument объекта Print для немедленной отправки распечатки на этот принтер. Источник: http://cs...

19 06 2020 16:53:16

PHP 5 для чайников (Джанет Валейд)

Данная книга является введением в область Web-программирования на языке Р Н Р 5. С ее помощью можно быстро написать сценарий для Web, обеспечить взаимодейств...

18 06 2020 12:54:15

[Ctrl + A] Выделить весь текст в текстовом поле в C#

Часто пользователю удобно нажимать Ctrl + A, чтобы выделить весь текст в TextBox, который имеет фокус. Странно, что это не поведение по умолчанию для TextB...

17 06 2020 19:26:15

Добавьте полезные расширения в класс BitArray в C#

Пример Использование класса BitArray в C# объясняет, как для использования класса BitArray. Этот пример добавляет некоторые полезные функции в класс BitArr...

16 06 2020 3:34:37

Разница между списками и кортежами в Python?

Главное отличие состоит в том, что кортежи неизменяемы. Это означает, что вы не можете изменить значения в кортеже после его создания. Поскольку список изм...

15 06 2020 22:10:26

Строки в JavaScript

Строки полезны для хранения данных, которые могут быть представлены в текстовой форме. Строковый литерал имеет ноль или более символов, заключенных в одина...

14 06 2020 14:10:35

Современные языки программирования: список 2018

Список современных языков программирования на 2018 год. Чтобы определиться с конкретным языком программирования для изучения (одним или несколькими) нужно для начала ответить себе на вопрос:...

13 06 2020 12:51:20

Что такое ключевое слово volatile в Java

Ключевое слово Java volatile гарантирует, что значение переменной volatile всегда будет считаться из основной памяти, а не из локального кэша Thread. Это о...

12 06 2020 23:22:22

Сортировка и поиск массивов в C#

Класс Array предоставляет несколько полезных методов работы с массивами. Два из них позволяют сортировать и искать массивы. В следующем коде показано, как...

11 06 2020 18:22:49

JavaScript. Справочник (Аллен Вайк)

Книга "Javascript. Справочник" представляет собой исключительно полный справочник по объектам, методам, атрибутам, высокоуровневым функциям языка написания...

10 06 2020 0:10:22

Как открыть и прочитать URL-адрес в Java

Чтение с URL-адреса так же просто, как чтение из входного потока. URL - это аббревиатура Uniform Resource Locator. Java-программы, которые взаимодействуют...

09 06 2020 1:31:29

Среда разработки Android Studio

Android Studio – интегрированная среда разработки для платформы Android, разработанная компанией Google в 2013 году. Вплоть до 2014 года существовала как п...

08 06 2020 14:27:30

Как нарисовать текст, заполненный картиной в C#

В этом примере показано, как вы можете нарисовать текст, заполненный изображением. Он использует два изображения, добавленные в проект в качестве ресурсов....

07 06 2020 9:21:21

Нарисуйте прокладку Аполлония в C#

Пример Найти круги, которые касаются трех заданных кругов (проблема Аполлония) в C# , показывают, как найти до восьми кругов, которые касаются трех заданны...

06 06 2020 15:17:45

PHP 5 для начинающих (Дэйв У. Мерсер, Аллан Кент, Стивен Д. Новицки)

Эта книга представляет собой подробное учебное пособие для желающих освоить современную версию PHP. В книге описывается установка и конфигурирование PHP, о...

05 06 2020 6:21:59

Простой Python. Современный стиль программирования. (Билл Любанович)

Эта книга идеально подходит как для начинающих программистов, так и для тех, кто только собирается осваивать Python, но уже имеет опыт программирования на...

04 06 2020 20:41:28

Сделать свойство индексатора по умолчанию для класса в C#

Классы, такие как Dictionary и List предоставляют свойство индексатора по умолчанию, которое позволяет вам получать доступ к значениям, используя синтаксис...

03 06 2020 14:52:47

Безопасное управление документами на C#

Это довольно привлекательный пример, который показывает, как безопасно управлять документами.  Части все просты, но есть много плотно интегрированных частей...

02 06 2020 5:36:33

Процедурные языки программирования

Процедурные языки программирования - языки программирования, код которых можно разделить на процедуры. Программирование – это очень объемная сфера знаний, изучить которую целиком не сможет ни один человек на свете....

01 06 2020 11:17:52

Основы программирования в Delphi 7 (Н. Б.Культин)

Книга является руководством по программированию в среде Delphi 7. Описывается весь процесс разработки программы: от конструирования диалогового окна до орг...

31 05 2020 15:29:32

Отображение подсказок для узлов TreeView в C#

Во время разработки я добавил элемент формы TreeView в форму. Я также добавил связанный элемент управления ImageList для хранения изображений для узлов упр...

30 05 2020 9:14:35

Добавление и удаление изображений на листе Excel

... Метод InsertPicture вызывает метод Insert для активного листа Picture. Затем он устанавливает свойства изображения Top и Left в Top и Left местоположен...

29 05 2020 10:27:10

Как удалить непечатаемые символы ASCII из строки в C#

Следующий способ расширения TrimNonAscii удаляет непечатаемые символы ASCII из строки. ... Обратите внимание, что этот метод удаляет много полезных символо...

28 05 2020 6:22:32

Как нарисовать пронумерованные круги и сохранить их в файлах на C#

Иногда мне нужно рисовать пронумерованные круги для размещения на изображениях, которые я буду использовать в книгах или статьях. Эта программа позволяет м...

27 05 2020 17:58:20

Инициализировать массив массивов в C#

Пример Инициализация двумерных массивов в C# объясняет как инициализировать двумерный массив. Массив массивов несколько похож на двумерный массив, но с нек...

26 05 2020 5:23:45

Генерация случайных строк в C#

Иногда полезно генерировать случайные строки, часто для тестирования программы, такой как сортировка строк. Метод Random класса Next генерирует случайные ч...

25 05 2020 7:49:40

Разница между памятью Stack and Heap в Java

Модель Java Heap и Stack Memory определяет, как и когда разные потоки могут видеть значения, записанные в общие переменные другими потоками, и как синхрони...

24 05 2020 19:34:50

Может ли класс верхнего уровня быть закрытым или защищенным в Java

Нет. Класс верхнего уровня как закрытый был бы совершенно бесполезен, потому что ничто не имело бы к нему доступа. Если класс верхнего уровня объявлен как...

23 05 2020 9:12:55

RandomAccessFile в Java

Java RandomAccessFile обеспечивает несущественный доступ к файлам. Он ведет себя как большой массив байтов, хранящихся в файловой системе. Это означает, чт...

22 05 2020 7:59:54

Сравнение производительность типов данных int, long и byte в C#

Пример Сравните производительность типов float, double и decimal в C# , сравнивает производительность float, double и decimal . В этом примере выполняется...

21 05 2020 22:18:10

Языки программирования низкого уровня: низкоуровневые языки

Языки программирования низкого уровня или низкоуровневые традиционно появились первыми и в последующем стали базисом для развития всей И Т индустрии....

20 05 2020 10:22:11

Калькулятор на C#

...

19 05 2020 16:59:11

Пространство имен в C#

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

18 05 2020 11:50:48

Как отобразить числовые значения для цветов в радуге в C#

Иногда полезно сопоставлять числовые значения цвета. Например, интенсивность цвета может указывать на плотность населения, урожайность сельскохозяйственных...

17 05 2020 10:34:37

PHP и MySQL. Исчерпывающее руководство (Бретт Маклафлин)

Если у вас есть опыт разработки сайтов с помощью CSS и Javascript, то эта книга переведет вас на новый уровень веб-разработки — создание динамических веб-с...

16 05 2020 19:23:17

Выполнение бинарного усиления контраста на изображении в C#

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

15 05 2020 7:30:40

Чтение и запись объектов в Java

Сериализация - это преобразование объекта в последовательность байтов, чтобы объект можно было легко сохранить в постоянном хранилище или потоковом потоке...

14 05 2020 5:12:22

Используйте объект ImageAttributes для преобразования изображения в оттенок сепии в C#

В этом примере был изменен предыдущий пример Использовать объект ImageAttributes для преобразования изображения в монохромный в C# для преобразования изобр...

13 05 2020 8:15:54

Посмотрите, какие процессы заблокированы в C#

В старых версиях Windows было невозможно определить, какие процессы заблокировали файл. Система отслеживала количество блокировок в файле, и процессы отвеч...

12 05 2020 18:56:39

Нарисуйте заполненную картиной гистограмму в C#

Пример Сделать простая гистограмма в C# показывает, как рисовать гистограмму. В этом примере показано, как заполнять бары гистограммы изображениями. Следую...

11 05 2020 10:40:38

Объявлять и инициализировать пустые массивы в C#

Это удобный трюк для работы с возможными пустыми массивами. Программа C# не может использовать свойства и методы массива, пока не будет создан экземпляр ма...

10 05 2020 21:15:31

Отображение состояния батареи с помощью значка уведомлений в C#

Пример Показывать статус батареи дружелюбно в C# показывает, как нарисовать изображение батареи, чтобы показать состояние батареи. В этом примере отображае...

09 05 2020 9:32:13

Гамма-коррекция изображения в C#

Гамма-коррекция или просто гамма - это нелинейное изменение красных, зеленых и синих компонентов пикселей в изображении. Сообщение Используйте объект Image...

08 05 2020 20:28:31

В чем разница между файлами .py и .pyc?

Python компилирует .py файлы и сохраняет его как .pyc-файлы, поэтому он может ссылаться на них при последующих вызовах. Файл .pyc содержит скомпилированный...

07 05 2020 19:43:35

Преобразование String в Float в C#

В этой статье мы напишем программу C# для преобразования String в Float с использованием метода float.Parse () Вывод: 9,819   Источник: http://www.csh...

06 05 2020 13:36:41

Основы программирования в Embarcadero Delphi (Никита Культин)

Книга представляет собой практическое руководство по программированию в Embarcadero Delphi. В ней представлена технология визуального проектирования и собы...

05 05 2020 16:12:21

Как открыть файл PDF в C#

Во время разработки я добавил в форму элемент WebBrowser. Когда программа запускается, он использует следующий код для открытия PDF-файла в элементе управл...

04 05 2020 12:11:28

Получить использование памяти программы в C#

Код получает объект Process программы, а затем использует его свойства, чтобы узнать об использовании памяти. Источник: http://csharphelper.com/blog/2015/1...

03 05 2020 6:10:13

Создание вашей первой программы на Python

Запуск Pytthon Interpreter После установки интерпретатор python живет в установленной директории. На компьютерах Windows установка Python обычно помещается...

02 05 2020 11:14:58

Разница между абстрактным классом и интерфейсом в Java

Термин « Абстракция» означает скрытие внутренней реализации функции и только отображение функциональности для пользователей. Это означает, что абстрактный к...

01 05 2020 21:15:36

Используйте массив управления в C#

Иногда бывает полезно использовать массив управления. Еще до .NET, Visual Basic позволяет определять массивы управления во время разработки. Концепция исче...

30 04 2020 5:12:18

События JavaScript DOM

События - это определенные действия, выполняемые конечным пользователем или самим веб-браузером. Он может запускаться в любой части документа, независимо о...

29 04 2020 1:23:47

Отображение метафайла Windows (wmf) в C#

Метафайк Windows (wmf) - это файл изображения, содержащий инструкции для рисования фигур. Напротив, растровые, PNG, JPG и другие файлы растровых изображени...

28 04 2020 15:13:39

Как сделать класс с определением и повышением событий в C#

В этом примере используется класс BankAccount для управления банковским счетом (и для определения способов и событий события). Если программа пытается удал...

27 04 2020 19:39:45

Нарисуйте пунктирные линии с разными стилями в C#

Чтобы нарисовать пунктирные линии, создайте новый Pen и установите его свойство DashStyle, чтобы указать стиль тире, который вы хотите. Например, следующий...

26 04 2020 23:35:28

Как узнать реальное время в Unity 5 при помощи ntp сервера.

В этом уроке мы разберем, как узнать реальное время в Unity 5 при помощи ntp сервера для избежания "читерства" переводом времени на локальной машине....

25 04 2020 16:11:43

IF, ELIF, ELSE в Python

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

24 04 2020 16:23:46

Алгоритм Brute-Force в C#

В этой статье мы узнаем о реализации алгоритма в C# Brute-Force.Brute-force search или исчерпывающий поиск, также известный как генерация и тест,...

23 04 2020 20:27:47

Что такое поток Daemon в Java

Демон-поток - это поток поставщика услуг, который предоставляет услуги пользовательскому потоку. Демона, который работает в фоновом режиме и в основном соз...

22 04 2020 2:15:41

Где разместить JavaScript в HTML-файле?

Существует гибкость, предоставляемая для включения кода JavaScript в любом месте документа HTML. Код JavaScript может быть встроен в: Заголовок страницы ме...

21 04 2020 4:51:44

Нарисуйте кривую с несколькими цветами в C#

Достаточно легко рисовать разные линии с разными цветами, но не так просто рисовать одну строку, которая использует несколько цветов. Один из способов доби...

20 04 2020 13:18:51

Дмитрий Осипов - Delphi XE2

Настоящее издание посвящено новейшей разработке компании Embarcadero - языку Delphi XE2. Книга предоставляет читателю не только полное описание одного из с...

19 04 2020 17:17:11

Как преобразовать TimeStamp в Date в Java?

API JDBC использует отдельный класс Date, Time и Timestamp для подтверждения типа данных DATE, TIME и DATETIME из базы данных, но большая часть объектно-ор...

18 04 2020 7:12:44

Чтение / преобразование InputStream в строку в Java

Строка - это последовательность символов, используемых для хранения данных типа «Halo World!». Поток - это класс ввода / вывода, который используется для ч...

17 04 2020 4:35:59

Оператор Java break и continue

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

16 04 2020 3:46:48

Как рандомизировать двумерные массивы в C#

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

15 04 2020 17:36:55

Как быстро научиться программировать: 7 советов

Как быстро научиться программировать? Чтобы облегчить обучение программированию и хорошо усвоить основы, необходимо правильно выбрать темп работы и использовать некоторые способы....

14 04 2020 2:40:40

Что подразумевается под анонимным классом в Java?

Анонимный класс в Java - это класс, которому не присвоено имя, и объявляется и создается в одном выражении. Анонимный класс обычно используется на платформ...

13 04 2020 14:18:24

Программирование Java для начинающих

Обучение программе означает научиться решать проблемы с помощью кода. Эти простые примеры программирования полностью предназначены для начинающих, которые...

12 04 2020 7:16:55

Отображать изображения в базе данных Access в WPF и C#

В этом примере показано, как вы можете отображать изображения, хранящиеся в базе данных Access в программе WPF. Вы можете сделать это с помощью связанных э...

11 04 2020 14:32:32

Язык JavaScript (Илья Контор)

Эта часть позволит вам изучить Javascript с нуля или упорядочить и дополнить существующие знания. Мы будем использовать браузер в качестве окружения, но ос...

10 04 2020 16:36:33

Что такое компилятор Just-In-Time (JIT) в Java?

Компилятор Just-In-Time (JIT) является компонентом JRE (Java Runtime Environment), который повышает производительность приложений Java во время выполнения....

09 04 2020 2:28:29

Анимация проблемы Башни Ханоя в C#

Следующий метод AnimateMovement перемещает диск по прямой линии из текущего местоположения в новый. Код вычисляет количество пикселей в секунду, которое он...

08 04 2020 2:59:16

Что значит Static в Java?

Static - это модификатор без доступа. Это означает, что что-то (поле, метод, блок или вложенный класс) связано с типом, а не с каким-либо конкретным экземп...

07 04 2020 23:57:54

Почему класс Java не может быть объявлен как статический?

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

06 04 2020 7:47:47

Как получить длину строки в Java

Длина() объекта String возвращает длину этой строки. Длина строки Java такая же, как и юникодные кодовые единицы строки. Синтаксис: Нет параметра для lengt...

05 04 2020 5:15:11

Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи (А. Белов)

Книга « Разработка устройств на микроконтроллерах AVR: шагаем от чайника до профи» Белова А. В. поможет Вам всего за шесть несложных шагов преодолеть путь от...

04 04 2020 15:31:54

Полностью обосновать абзацы текста в C#

Класс StringFormat делает его достаточно простым для выравнивания по левому краю, выравнивания по правому краю или центровки строки текста, но, как ни стра...

03 04 2020 3:58:16


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69