русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Применение классов GraphicsPath и Region. Круглая форма


Дата добавления: 2015-07-09; просмотров: 656; Нарушение авторских прав


using System;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;

 

namespace StrangeControls

{

/// <summary>

/// Объявляется класс-наследник базового класса Form.

/// Наша форма, конечно же, основывается на обычной классической

/// прямоугольной, масштабируемой форме.

/// Прежде всего, это означает,что у неё имеется свойство Size,

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

/// составляющих нашу форму элементов.

/// Наша форма состоит из двух элементов:

/// Прямоугольника-заголовка (здесь должны размещаться основные элементы управления формы).

/// Эллипсовидной клиентской области с голубой каёмочкой.

/// </summary>

public class RoundForm : System.Windows.Forms.Form

{

 

private System.ComponentModel.Container components = null;

// Объект headSize используется для управления размерами формы.

private Size headSize;

// bw - (border width) это переменная,

// сохраняющая метрические характеристики рамки.

// В дальнейшем это значение используется для определения

// размеров нашей формы.

int bw;

 

// Ничем не примечательный конструктор...

public RoundForm()

{

InitializeComponent();

}

 

 

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

//

// RoundForm

//

this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);

this.ClientSize = new System.Drawing.Size(292, 273);

this.Cursor = System.Windows.Forms.Cursors.Cross;

this.MinimumSize = new System.Drawing.Size(100, 100);



this.Name = "RoundForm";

this.Text = "RoundForm";

this.Resize += new System.EventHandler(this.RoundForm_Resize);

 

}

#endregion

 

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if(components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

 

 

// Обработчик события, связанного с изменением формы окна обеспечивает

// вызов метода, в котором определяются основные характеристики

// составляющих формы.

private void RoundForm_Resize(object sender, System.EventArgs e)

{

SetSize();

}

 

// Код, определяюший габариты ФОРМЫ - весь здесь...

// Это определение метрических характеристик ФОРМЫ.

protected void SetSize()

{

// Всего ничего...

// На основе соответствующей "классической" формы

// определяются размеры прямоугольной составляющей (заголовка формы).

int w = this.Size.Width;

bw = (int)((w - this.ClientSize.Width)/2);

int h = this.Size.Height;

int bh = h - this.ClientSize.Height - bw;

headSize = new Size(w,bh);

}

 

// В рамках переопределённой виртуальной функции...

protected override void OnPaint(PaintEventArgs e)

{

// Определяем габариты формы.

SetSize();

// Получаем ссылку на графический контекст.

Graphics gr = this.CreateGraphics();

// Карандаш для отрисовки каёмочки.

Pen pen = new Pen(SystemColors.Desktop,bw);

// Объект, поддерживающий контуры формы.

GraphicsPath gp = new GraphicsPath();

// Контуры формы образуются прямоугольником

//(его характеристики совпадают с заголовком формы).

// класс GraphicsPath не имеет метода, который позволял

// бы непосредственно подсоединять прямоугольные области.

// Поэтому структура Rectangle предварительно определяется.

// С эллипсом проще. Он подсоединяется "на лету",

// без предварительного опредедления.

Rectangle rect = new Rectangle(0,0,headSize.Width,headSize.Height);

gp.AddRectangle(rect);

gp.AddEllipse(bw,headSize.Height,this.ClientSize.Width,this.ClientSize.Height);

// Сформировали объект, поддерживающий контуры формы.

// И на его основе создаём объект, который описывает внутреннюю часть

// графической формы.

// В нашем случае она состоит из прямоугольника и эллипса.

Region reg = new Region(gp);

// У любой формы имеется свойство Region.

// У нашей формы - он прекрасен.

this.Region = reg;

// Рисуем каёмочку...

gr.DrawEllipse(pen,0,0,this.ClientSize.Width,this.ClientSize.Height);

// Освобождаем занятые ресурсы.

gr.Dispose();

}

 

}

}



<== предыдущая лекция | следующая лекция ==>
GraphicsPath | Собственные элементы управления


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.044 сек.