Есть ли способ нарисовать изображение, чтобы использовать 4 точки, а не 3 (перспектива деформации)
Вопрос
Рисование параллелограмма прекрасно поддерживается с Graphics.DrawImage:
Bitmap destImage = new Bitmap(srcImage.Width, srcImage.Height);
using (Graphics gr = new Graphics.FromImage(destImage))
{
Point[] destPts = new Point[] { new PointF(x1, y1),
new PointF(x2, y2), new PointF(x4, y4)};
gr.DrawImage(srcImage, destPts);
Как, вы делаете 4 очка (очевидно, следующее не поддерживается, но это то, что нужно):
Bitmap destImage = new Bitmap(srcImage.Width, srcImage.Height);
using (Graphics gr = new Graphics.FromImage(destImage))
{
Point[] destPts = new Point[] { new PointF(x1, y1), new PointF(x2, y2),
new PointF(x3, y3), new PointF(x4, y4)};
gr.DrawImage(srcImage, destPts);
}
Решение
Ближайшая информация, которую я могу найти, - это эта информация , которая чрезвычайно запаздывает. р>
Другие советы
Обычно вы делаете это с матрицей 3x3, но класс Matrix позволяет указывать только 6 значений вместо 9. Вы можете сделать это в Direct X.
Размышляя о том, как 3D-инструменты справятся с этим ... попробуйте нарисовать треугольник одной половины, а затем другой треугольник для другой половины. Так что, если у вас есть точки A, B, C и amp; D; Вы бы нарисовали (с плоскостью отсечения) A, B, C, а затем B, C, D или что-то в этом роде.
Я нашел следующую статью в CodeProject: Бесплатное преобразование изображений с помощью YLS
нужны некоторые работы
может быть, вы можете использовать это:)