3. Дважды щелкните на кнопке Button1 в окне конструктора форм; в результате этого будет создан и подключен к кнопке приведенный ниже обработчик событий button1_Click. Введите приведенный в листинге 11.6 код, который реагирует на это событие.
4. Скомпилируйте пример и запустите его на выполнение. Щелкните на кнопке Button1.
С применения подхода, основанного на элементе управления PictureBox, рекомендуется начинать в тех случаях, когда существует необходимость в отображении графических данных. Если такой подход в состоянии удовлетворить нужды вашего приложения — отлично! Пытаться использовать другие, более сложные подходы имеет смысл лишь в тех случаях, когда только что описанный подход вас не устраивает.
Листинг 11.6. Создание изображения на внеэкранной растровой поверхности и передача его в элемент управления PictureBox//--------------------------------------------------------------------
//Создать рисунок на растровой поверхности. Переслать его в PictureBox
//--------------------------------------------------------------------
private void button1_Click(object sender, System.EventArgs e) {
//Создать новую битовую карту
System.Drawing.Bitmap myBitmap;
myBitmap = new System.Drawing.Bitmap(pictureBox1.Width, pictureBox1.Height);
//--------------------------------------------------------------------------
//Создать объект Graphics, чтобы иметь возможность рисовать на битовой карте
//--------------------------------------------------------------------------
System.Drawing.Graphics myGfx;
myGfx = System.Drawing.Graphics.FromImage(myBitmap);
//Закрасить нашу битовую карту желтым цветом
myGfx.Clear(System.Drawing.Color.Yellow);
//Создать перо
System.Drawing.Pen myPen;
myPen = new System.Drawing.Pen(System.Drawing.Color.Blue);
//-----------------
//Нарисовать эллипс
//-----------------
myGfx.DrawEllipse(myPen, 0, 0, myBitmap.Width - 1, myBitmap.Height -1);
//Создать сплошную кисть
System.Drawing.Brush myBrush;
//-----------------------
//Нарисовать текст кистью
//-----------------------
myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
//Примечание: Мы используем объект Font из формы
myGfx.DrawString("Hello!",this.Font, myBrush, 2, 10);
//------------------------------
//Важно! Очистить все после себя
//------------------------------
myGfx.Dispose();
myPen.Dispose();
myBrush.Dispose();
//-------------------------------------------------------------------
//Указать объекту pictureBox, на необходимость отображения растрового
//изображения, которое мы только что создали и нарисовали.
//-------------------------------------------------------------------
pictureBox1.Image = myBitmap;
}
Рисование непосредственно в формеДля рисования в форме существует два способа:
1. Создайте объект Graphics для формы и используйте этот объект для создания нужных рисунков.
2. Подключитесь к функции OnPaint() для формы и получите объект Graphics, который можно будет использовать для рисования.
Создание объекта Graphics для формы и рисование на нем обычно применяются лишь изредка, поскольку в этом случае любой созданный вами рисунок не существует постоянно. Форма с удовольствием предоставит вашему приложению свою поверхность для рисования всего, что вам заблагорассудится, но не будет запоминать нарисованное. Это означает, что если форма по какой-либо причине будет перерисована, то все, что нарисовал ваш код, исчезнет. Поэтому данный метод не годится для графики, которую вы хотите сохранять на экране в течение длительных периодов времени. Так, описанный способ плохо подходит для вычерчивания диаграмм, которые пользователь будет просматривать на своем мобильном устройстве, поскольку ваше приложение не в состоянии контролировать, когда именно отображаемая картинка будет частично или полностью перекрыта другим изображением. Вместе с тем, данный метод может оказаться полезным в тех случаях, когда все экранное изображение все время полностью перерисовывается, как это происходит, например, в играх. Если изображение перерисовывается несколько раз в секунду, то не имеет никакого значения, является ли оно постоянно существующим или нет.
Эта методика рисования проиллюстрирована в листинге 11.7. Для создания и запуска данного приложения необходимо выполнить следующие действия:
1. Начните новый проект Smart Device в Visual Studio .NET и выберите в качестве целевой платформы Pocket PC.
2. Добавьте в форму Form кнопку Button.
3. Дважды щелкните на кнопке Button1 в окне конструктора форм; в результате этого будет создан и подключен к кнопке приведенный ниже обработчик событий button1_Click. Введите приведенный в листинге 11.7 код, который реагирует на это событие.
4. Скомпилируйте пример и запустите его на выполнение. Щелкните на кнопке Button1.
Листинг 11.7. Создание объекта Graphics для формы