Візуалізація елементів управління windows forms

Метод OnPaint базового класу Control не реалізує будь-якої функціональності малювання. Він лише викликає делегатів події, зареєстрованих з подією Paint. При перевизначенні OnPaint слід, як правило, викликати метод OnPaint базового класу, щоб зареєстровані делегати отримали подія Paint. Однак елементи управління, вимальовується свої поверхні, не повинні викликати OnPaint базового класу, так як це викличе мерехтіння зображення. Приклад перевизначення події Практичний посібник. Створити елемент управління, що показує прогрес у формі Windows Forms міститься в розділі OnPaint.

Чи не викликайте OnPaint безпосередньо з елемента управління. Замість цього викличте метод Invalidate (успадковані від Control) або будь-якої іншої метод, що викликає Invalidate. У свою чергу, метод Invalidate запускає OnPaint. Метод Invalidate перевантажується, і, в залежності від аргументів, застосованих для Invalidate e. елемент керування частково або повністю перемалюю свою поверхню екрану.

Базовий клас Control визначає інший метод, корисний для малювання: метод OnPaintBackground.

OnPaintBackground малює фон (а значить, і форму) вікна і гарантовано робить це швидко, в той час як OnPaint малює деталі і може працювати повільніше, так як індивідуальні запити на малювання об'єднані в одну подію Paint. яке перекриває всі області, які повинні бути перемальовані. Може виникнути необхідність викликати OnPaintBackground. наприклад в разі, якщо буде потрібно намалювати градієнтний зафарбований фон для елементу управління.

Хоча OnPaintBackground має систему позначень, схожу з системою позначень події, і приймає такі ж аргументи, як і метод OnPaint. OnPaintBackground не є істинним методом події. Подія PaintBackground не існує, і OnPaintBackground не викликає делегати подій. При перевизначенні методу OnPaintBackground похідний клас не потрібно для виклику методу OnPaintBackground його базового класу.

Клас Graphics надає методи для малювання різних форм, таких як кола, трикутники, дуги і еліпси, а також методи для відображення тексту. Простір імен System.Drawing і його підпростори містять класи, инкапсулирующие графічні елементи, такі як форми (кола, прямокутники, дуги та ін.), Кольору, шрифти, кисті і т.д. Додаткові відомості про GDI (інтерфейс) см. В розділі Використання керованих графічних класів. Основи GDI (інтерфейс) також наводяться в розділі Практичний посібник. Створити елемент управління, що показує прогрес у формі Windows Forms.

Властивість ClientRectangle елемента управління задає прямокутну область, доступну для елемента управління на екрані користувача, в той час як властивість ClipRectangle PaintEventArgs задає область, яка фактично намальована. (Запам'ятайте, що малювання виконується в методі події PaintEventArgs. Отримують примірник Paint в якості аргументу). Елемент управління може вимагати перемалювати тільки частина доступною області, як у випадку, коли змінюється невелика частина його зображення. У такій ситуації розробник елемента управління повинен розрахувати фактичний прямокутник, в якому буде вестися малювання, і передати його Invalidate. Перевантажені версії Invalidate. отримують Rectangle або Region як аргумент, використовують цей аргумент для створення властивості ClipRectangle PaintEventArgs.

Наступний фрагмент коду показує, як користувальницький елемент управління FlashTrackBar розраховує прямокутну область, в якій буде вестися малювання. Мінлива client позначає властивість ClipRectangle. Повний приклад міститься в розділі Практичний посібник. Створити елемент управління, що показує прогрес у формі Windows Forms.

Схожі статті