|
Программирование >> Программирование с использованием ajax
пракптское заияше Рисование эллипса с использованием изображения Чтобы выполнить прорисовку фрагмента текста с использованием кисти 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.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |