5 / 5 / 1
Регистрация: 26.10.2010
Сообщений: 126

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

02.12.2010, 08:38. Показов 12087. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru