Примеры Delphi и C# из жизни

Примеры программирования на языках Delphi, C#

 




Вписать изображение в четырехугольник (параллелограмм) | Delphi

Иногда бывает необходимо вывести изображение в некий четырехугольник. К примеру, растянуть, сжать или сдвинуть границы. Также, частным случаем является вращение.

Один из перегруженных методов объекта Graphics GDI+ позволяет задать координаты точек куда и будет выведено, внутри ограничиваемого ими четырехугольника, изображение.

Три ограничивающие точки располагаются следующим образом:
1 2

3

Теперь пример:
uses GDIPAPI, GDIPOBJ, GDIPUTIL;
var 
 dp: array of TGPPointF; // массив координат угловых точек
 img: TGpImage;
 gpcanvas: TGPGraphics;
begin 
 img := TGPImage.Create('cat.bmp');
 SetLength(dp, 3); // создаем массив
 dp[0].X := 300.0; // и заполняем его
 dp[0].Y := 120.0;
 dp[1].X := 400.0;
 dp[1].Y := 220.0;
 dp[2].X := 300.0;
 dp[2].Y := 230.0;

В событии PaintBox1.OnPaint:
 gpcanvas := TGPGraphics.Create(PaintBox1.Canvas.Handle);
 gpcanvas.DrawImage(img, PGPPointF(dp), 3);
 gpcanvas.Free;