| netlib.narod.ru | < Назад | Оглавление | Далее > |
Следующие два метода позволяют еще сильнее деформировать картинку. Они сдвигают, масштабируют, перекашивают или вращают ее, подгоняя под параллелограмм.
Методы DrawImage класса Graphics (выборочно)
| void DrawImage(Image image, Point[] apt) |
| void DrawImage(Image image, PointF[] aptf) |
Передаваемый во втором аргументе массив должен содержать точно три точки. Эти точки определяют местоположение трех углов изображения в мировых координатах:
apt[0] — местоположение верхнего левого угла изображения;
apt[1] — местоположение верхнего правого угла изображения;
apt[2] — местоположение нижнего левого угла изображения.
Поскольку изображение вписывается в параллелограм, местоположение нижнего правого угла вычисляется автоматически.
Вот программа, которая устанавливает эти три точки в центре верхней стороны клиентской области, в центре правой стороны клиентской области и в центре левой стороны клиентской области.
ImageAtPoints.cs
//----------------------------------------------
// ImageAtPoints.cs (C) 2001 by Charles Petzold
//----------------------------------------------
using System;
using System.Drawing;
using System.Windows.Forms;
class ImageAtPoints: PrintableForm
{
Image image;
public new static void Main()
{
Application.Run(new ImageAtPoints());
}
public ImageAtPoints()
{
Text = "Image At Points";
image = Image.FromFile("..\\..\\..\\Apollo11FullColor.jpg");
}
protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
{
grfx.DrawImage(image, new Point[] { new Point(cx / 2, 0),
new Point(cx, cy / 2),
new Point(0, cy / 2)});
}
}
А вот полученное изображение.

Это не единственный способ вращать или наклонять растровые изображения. Вы также можете использовать обычное мировое преобразование.
| netlib.narod.ru | < Назад | Оглавление | Далее > |