Читаем Программирование мобильных устройств на платформе .NET Compact Framework полностью

  //Важно: Вызвать базовую реализацию. Это

  //обеспечит возможность вызова любого обработчика событий,

  //подключенного к данному элементу управления

  //--------------------------------------------------------

  base.OnClick(e);


  //------------------------------------------------------

  //Выбрать цвет новой кисти, исходя из цвета старой кисти

  //------------------------------------------------------

  if (m_RectangleColor == System.Drawing.Color.Black) {

   m_RectangleColor = System.Drawing.Color.Blue;

   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

   //Запустить событие                                   !

   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

   if (EventButtonTurningBlue!= null) {

    //Возбудить событие без передачи аргумента

    EventButtonTurningBlue(this, null);

   }

  }

  else

   if (m_RectangleColor == System.Drawing.Color.Blue) m_RectangleColor = System.Drawing.Color.Red;

   else m_RectangleColor = System.Drawing.Color.Black;


  //-----------------------

  //Освободить старую кисть

  //-----------------------

  m_RectangleBrush.Dispose;


  //----------------------------------------------------------------

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

  //----------------------------------------------------------------

  m_RectangleBrush = new System.Drawing.SolidBrush(m_RectangleColor);


  //------------------------------------------------------------

  //Сообщить операционной системе, что наш элемент управления

  //должен быть перерисован, как только представится возможность

  //------------------------------------------------------------

  this.Invalidate;

 }


 //----------------------------------------------------------------

 //Ради интереса подсчитаем, сколько раз осуществлялась перерисовка

 //----------------------------------------------------------------

 int m_paintCount;

 protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) {

  //--------------------------------------------

  //ВАЖНО: Вызвать базовый класс и позволить ему

  //выполнить работу по рисованию

  //--------------------------------------------

  base.OnPaint(e);


  //Увеличить на единицу значение счетчика вызовов

  m_paintCount = m_paintCount + 1;


  //-------------------------------------------------------------------

  //Важно:

  //Вместо того чтобы создавать объект Graphics, мы получаем его

  //на время данного вызова. Это означает, что освобождать память путем

  //вызова метода .Dispose объекта - не наша забота

  //-------------------------------------------------------------------

  System.Drawing.Graphics myGfx;

  myGfx = e.Graphics;


  //Нарисовать прямоугольник

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT