Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс Graphics предоставляет несколько методов DrawImage. Некоторые из которых имеют параметры исходного прямоугольника и прямоугольника назначения, которые можно использовать для обрезки и масштабирования изображений.
Пример
В следующем примере из файла Apple.gif. на диске создается объект Image. Код рисует весь рисунок яблока в исходном размере. Затем код вызывает метод DrawImage объекта Graphics для рисования части изображения яблока в прямоугольнике назначения, который больше исходного изображения с яблоком.
Метод DrawImage определяет, какую часть яблока следует рисовать, просматривая исходный прямоугольник (он задается третьим, четвертым, пятым и шестым аргументами). В этом случае яблоко обрезано до 75 процентов его ширины и 75 процентов его высоты.
Метод DrawImage определяет, где рисовать обрезанное яблоко и насколько увеличить обрезанное изображение, опираясь на прямоугольник назначения, который задается вторым аргументом. В этом случае прямоугольник назначения составляет 30 процентов шире и 30 процентов выше исходного изображения.
На следующем рисунке показано исходное яблоко и масштабированное, обрезанное яблоко.
Image image = new Bitmap("Apple.gif");
// Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0);
// Make the destination rectangle 30 percent wider and
// 30 percent taller than the original image.
// Put the upper-left corner of the destination
// rectangle at (150, 20).
int width = image.Width;
int height = image.Height;
RectangleF destinationRect = new RectangleF(
150,
20,
1.3f * width,
1.3f * height);
// Draw a portion of the image. Scale that portion of the image
// so that it fills the destination rectangle.
RectangleF sourceRect = new RectangleF(0, 0, .75f * width, .75f * height);
e.Graphics.DrawImage(
image,
destinationRect,
sourceRect,
GraphicsUnit.Pixel);
Dim image As New Bitmap("Apple.gif")
' Draw the image unaltered with its upper-left corner at (0, 0).
e.Graphics.DrawImage(image, 0, 0)
' Make the destination rectangle 30 percent wider and
' 30 percent taller than the original image.
' Put the upper-left corner of the destination
' rectangle at (150, 20).
Dim width As Integer = image.Width
Dim height As Integer = image.Height
Dim destinationRect As New RectangleF( _
150, _
20, _
1.3F * width, _
1.3F * height)
' Draw a portion of the image. Scale that portion of the image
' so that it fills the destination rectangle.
Dim sourceRect As New RectangleF(0, 0, 0.75F * width, 0.75F * height)
e.Graphics.DrawImage( _
image, _
destinationRect, _
sourceRect, _
GraphicsUnit.Pixel)
Компиляция кода
Приведенный выше пример предназначен для использования с Windows Forms и требует PaintEventArgse
, который является параметром обработчика событий Paint. Обязательно замените Apple.gif
на допустимые в вашей системе имя файла изображения и путь к нему.
См. также
.NET Desktop feedback