ОК, я уверен, что некоторые из вас уже знают, что происходит только по моему названию, так как я понимаю, что это очень распространенный вопрос. Но мой вопрос на самом деле немного глубже, поэтому, пожалуйста, будьте терпеливы со мной.
Все мои программы, которые я делал в прошлые годы, были на Ассемблере, в основном 8051 и AVR, как на С, но также и для микроконтроллеров. Я был более очарован HW, чем SW. Но я также очарован функциями ОС, ее API и так далее. Несколько дней спустя я сказал своему другу, что создать очень простую программу для построения графика функции должно быть очень легко, если у вас есть математический парсер. Он верил мне, поэтому я попытался сделать один.
Я решил пойти с C #, даже я не знаю ООП. Но я думал, что если я сделаю все одним действием кнопки, это будет как старый добрый C.
Итак, я заставил математический парсер работать, а потом начал рисовать, используя объект Pen. Моей первой попыткой было нарисовать простую линию. Прочитав один урок, я смог это сделать, и я создал простую ось для своего сюжета.
Но потом я заметил нечто странное, когда я свернул свою программу, рисование исчезает. Это заставило меня задуматься о том, как все это рисовать на системном уровне.
Я думал, что система хранит изображение активного окна, пока оно не изменится. Поэтому, когда вы перемещаете свои окна, он просто меняет свою позицию в famebuffer. И когда вы минимизируете его, он просто пропускает его во время отрисовки в кадровый буфер.
Но я видел, что это не так. Так, пожалуйста, не могли бы вы сказать мне, почему это происходит? Я могу прочитать, как предотвратить это во многих уроках, но я хотел бы знать больше, почему. Более того, это объясняется тем, как работает системный API, или тем, как работает класс рисования C #.
Кроме того, это заставило меня задуматься о том, что в библиотеках C # и .NET - это функция, которая является просто вызовом функции WinAPI, которая работает точно так же, и сколько библиотек и функций делают что-то большее. Например, если бы в GDI не было функции для рисования линий, и вы могли бы рисовать только точки, то C # добавил бы функцию для рисования линий из этих точек. Я надеюсь, что вы меня понимаете.
Спасибо.