Практическое руководство. Заливка фигуры текстурой, созданной на основе изображения

Закрытая фигура может быть заполнена текстурой с помощью класса Image или класса TextureBrush.

Пример

В следующем примере эллипс будет заполнен изображением. Код создает объект Image, а затем передает адрес этого объекта Image в качестве аргумента конструктору TextureBrush. Третий оператор масштабирует изображение, а четвертый — заполняет эллипс повторяющейся копией масштабируемого изображения.

В следующем коде свойство Transform содержит преобразование, которое применяется к изображению перед рисованием. Возьмем за основу изображение, которое имеет ширину 640 пикселей и высоту 480 пикселей. Преобразование уменьшит изображение до 75×75, задавая значения горизонтального и вертикального масштабирования.

Примечание.

В следующем примере размер изображения — 75×75, а размер эллипса — 150×250. Поскольку изображение меньше заполняемого эллипса, то он будет заполнен несколькими изображениями подобно плитке, т.е. замощен. Замощение — процесс, при котором изображение повторяется по горизонтали и вертикали до достижения границы фигуры. Дополнительные сведения о наложении см. в разделе Практическое руководство. Как замостить фигуру изображением.

Image image = new Bitmap("ImageFile.jpg");
TextureBrush tBrush = new TextureBrush(image);
tBrush.Transform = new Matrix(
   75.0f / 640.0f,
   0.0f,
   0.0f,
   75.0f / 480.0f,
   0.0f,
   0.0f);
e.Graphics.FillEllipse(tBrush, new Rectangle(0, 150, 150, 250));
Dim image As New Bitmap("ImageFile.jpg")
Dim tBrush As New TextureBrush(image)
tBrush.Transform = New Matrix( _
   75.0F / 640.0F, _
   0.0F, _
   0.0F, _
   75.0F / 480.0F, _
   0.0F, _
   0.0F)
e.Graphics.FillEllipse(tBrush, New Rectangle(0, 150, 150, 250))

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, и для него необходим объект PaintEventArgse, передаваемый в качестве параметра обработчику событий Paint.

См. также