Программирование >>  Программирование с использованием ajax 

1 ... 345 346 347 [ 348 ] 349 350 351 ... 396


пракптское заияше Рисование эллипса с использованием

изображения

Чтобы выполнить прорисовку фрагмента текста с использованием кисти TextureBrush, выполните следующие действия.

1. Начав с кода, созданного в предыдущем примере Drawlmage, добавьте в класс Forml еще одно объявление переменной Image:

partial class Forml : Form {

private Image thelmage; private Image smallImage;

2. В конструкторе формы на основе объекта thelmage создайте объект small Image. При этом укажите прямоугольник, высота и ширина которого составляют половину от размеров объекта thelmage. В результате будет создана меньшая версия исходного изображения:

public FormlО {

InitializeComponent (); SetStyle(ControlStyles.Opague, true); thelmage = new Bitmap( Person.bmp ); small Image = new Bitmap (thelmage,

new Size (thelmage. Width / 2, thelmage. Height / 2));

3. Замените метод OnPaint 0 следующей версией:

protected override void OnPaint(PaintEventArgs e) {

Graphics g = e.Graphics;

g.FillRectangle(Brushes.White, ClientRectangle);

Brush tBrush = new TextureBrush(smalllmage, new Rectangle(0, 0,

smallImage.Width, smalllmage.Height)); g.FillEllipse(tBrush, ClientRectangle); tBrush.Dispose ();

4. Избавьтесь от двух изображений, хранящихся в переменных-членах класса. Измените метод Dispose () класса (в файле Forml. Designer. cs) следующим образом:

protected override void Dispose ( bool disposing ) {

if (disposing) {

thelmage.Dispose(); smalllmage.Dispose();

if (disposing & & (components != null)) {

components.Di spose();

base.Dispose(disposing);



5. При запуске этого приложения окно должно выглядеть подобно показанному на рис. 33.13.


Рис. 33.13. Рисование эллипса с использованием изображения

Описание полученных результатов

При создании объекта TextureBrush мы передаем конструктору прямоугольник, определяющий, какая часть изображения будет использоваться для создания кисти. В данном случае мы указываем, что будет использовано все изображение. При выполнении любой прорисовки с применением кисти TextureBrush используется растровое изображение, а не чистый цвет.

Большая часть кода этого примера уже была пояснена в данной главе. Различие состоит в том, что мы вызываем метод FillEllipse () класса Graphics, передавая ему только что созданную текстурную кисть, и ClientRectangle выполняет прорисовку эллипса в окне.

д.FillEllipse(tBrush, ClientRectangle);

В следующем практическом упражнении мы создадим объект TextureBrush, а затем на его основе создадим перо.

Создание пера на основе изображения

Теперь, когда объект TextureBrush создан, с его помощью можно создать перо.

1. Начните с примера Drawlmage, измененного в предыдущем практическом упражнении, и измените метод OnPaint () следующим образом:

protected override void OnPaint(PaintEventArgs e) {

Graphics g = e.Graphics;

g.FillRectangle(Brushes.White, ClientRectangle);

Brush tBrush = new TextureBrush(smalllmage, new Rectangle(0, 0,

smalllmage.Width, smalllmage.Height));

Pen tPen = new Pen (tBrush, 40) ; g.DrawRectangle(tPen, 0, 0,

ClientRectangle.Width, ClientRectangle.Height) ;

tPen.Dispose 0;

tBrush.Dispose();



2. При запуске этого кода результат должен выглядеть подобно показанному на рис. 33.14.


Рис, 33,14, Создание пера па основе изображения

В следующем практическом упражнении мы выполним прорисовку текста, используя созданный объект TextureBrush.

Практическое заняти

Прорисовка текста с использованием изображения

Теперь можно выполнить прорисовку текста, используя объект TextureBrush.

1. Продолжая работу с кодом, созданным в предыдущем практическом занятии, измените метод OnPaint следующим образом:

protected override void OnPaint(PaintEventArgs e) {

Graphics g = e.Graphics;

g.FillRectangle(Brushes.White, ClientRectangle);

Brush tBrush = new TextureBrush(smalllmage, new Rectangle (0, 0,

smallImage.Width, smalllmage.Height)); Font trFont = new Font ( Times New Roman , 32,

FontStyle.Bold FontStyle.Italic); g.DrawString ( Hello from Beginning Visual C# ,

trFont, tBrush, ClientRectangle); tBrush.Dispose(); trFont.Dispose 0;

2. В этом примере будет использовано другое растровое изображение - поэтому в конструкторе формы измените строку, определяющую источник изображения thelmage, следующим образом:

thelmage = new Bitmap( Tile.bmp );

Файл Tile .bmp также можно найти в загружаемом коде.

3. Если теперь запустить этот код, результат должен быть подобен показанному на рис. 33.15.



1 ... 345 346 347 [ 348 ] 349 350 351 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика