Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/62: Рейтинг темы: голосов - 62, средняя оценка - 4.85
5 / 5 / 1
Регистрация: 26.10.2010
Сообщений: 126

Как выполнить Invalidate не стирая старое содержимое?

02.12.2010, 08:38. Показов 12037. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро, форумчане!

В С++ + MFC перерисовка клиентской области окна вызывалась вызовом функции Invalidate, при чём если надо было не стирать прошлую информацию - с аргументом false. В C# такой номер не проходит.

Вопрос: как вызвать перерисовку окна, не стирая при этом пошлое содержимое?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2010, 08:38
Ответы с готовыми решениями:

Копировать содержимое одного указанного файла в другой указанный файл, дописывая, а не стирая его содержимое
Dragokas, Помогите пожалуйста с заданием! Задание 3. Написать командный файл, копирующий содержимое всех файлов, записанных в задании...

Яша вспомнил старое содержимое
Яша уже показывал новый контент (до 13 июня). потом показал старый и вот уже несколько апов показывает старый контент. у кого...

Как выполнить скрипт не потеряв содержимое формы?
Я только учусь. Задался, как мне показалось несложной целью. Есть форма добавления новости в БД. Поле названия, поле текста, и кнопка...

24
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
02.12.2010, 17:52
Студворк — интернет-сервис помощи студентам
Разве двойная буферизация не так делается?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        ........................
        //переменные
        Graphics gr;
        BufferedGraphics bufferGraphics;
        BufferedGraphicsContext bufferGraphicsContext;
        ........................
 
        //конструктор
        Form1()
        {
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer |       ControlStyles.SupportsTransparentBackColor, true);
            this.UpdateStyles();
 
              bufferGraphicsContext = BufferedGraphicsManager.Current;
              gr = Graphics.FromHwnd(this.Handle);
        }
 
        /// <summary>
        /// Отрисовываем всё в буфере
        /// </summary>
        public void DrawToBuffer()
        {   //выставляем размер буфера "весь экран"
            bufferGraphicsContext.MaximumBuffer = new Size(this.Width, this.Height);
 
            bufferGraphics = bufferGraphicsContext.Allocate(gr,
                 new Rectangle(0, 0, this.Width + 1, this.Height + 1)); //создаём буфер
 
            bufferGraphics.Graphics.DrawImage(bmpImg, 0, 0, rectBack, GraphicsUnit.Pixel);
 
            bufferGraphics.Graphics.DrawImage(originalImg, 
                rectSelected.X, rectSelected.Y, rectSelected, GraphicsUnit.Pixel);
 
 
            bufferGraphics.Graphics.DrawRectangle(pen, rectSelected); 
        }
 
        //Далее в каком либо методе обработчике какого нибудь события
        public void Drawing()
        {
                DrawToBuffer(); //Производим отрисовку в буфере
                bufferGraphics.Render(); //выводим, то что отрисовалось в буфере
        }
Это пример просто с приложения одного моего. А так под себя конечно придётся переделать. У меня ничего не мигает вообще.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
02.12.2010, 18:03
Установив это
Цитата Сообщение от Casper-SC Посмотреть сообщение
this.SetStyle(ControlStyles.OptimizedDou bleBuffer | ...
.NET уже использует BufferedGraphics.
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
02.12.2010, 18:15
Ну в прошлых примерах рисуют на каком-то Bitmap, а тут в буфере (хотя честно сказать расплывчато представляю, что реально происходит, но доверия больше этот способ вызывает).
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
02.12.2010, 18:17
Casper-SC, я ничего не имею против этого метода ) Я тебе указывал на то, что при использовании ControlStyles.OptimizedDoubleBuffer .NET уже использует BufferedGraphics.
0
5 / 5 / 1
Регистрация: 26.10.2010
Сообщений: 126
02.12.2010, 23:08  [ТС]
Отцы! Полемика по поводу двойной буферизации это безусловно круто, но что мне всё-таки делать с Invalidate?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2010, 23:08

Как програмно выполнить содержимое текстового файла?
Всех с новым годом! Желаю всем сомого лучшего - что есть в этом мире! Друзья! Я вот решил немного усовершенствовать свою програмку. ...

Как нарисовать вторую линию не стирая первой
Вопрос такой рисую одну линию, сделал так чтобы видно было что рисую(также прямоугольник) но когда хочу нарисовать второй picturebox...

как использовать Control.Invalidate?
в общем такая фигня у меня выводится типа карты и я пытаюсь на неё показать типа движение точки по paint. по таймеру пытаюсь вызвать...

Как увеличить размерность массива, не стирая данные из него?
Допустим есть массив: int pole = new int; Я всем его ячейкам присвоил значения. Как увеличить его количество ячеек не...

Как рисовать линию с помощью мыши, не стирая уже нарисованного
public partial class Form1 : Form { Int32 x_begin = new Int32(); Int32 y_begin = new Int32(); Int32...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru