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 | < Назад | Оглавление | Далее > |