Есть ли способ нарисовать изображение, чтобы использовать 4 точки, а не 3 (перспектива деформации)

StackOverflow https://stackoverflow.com/questions/38308

  •  09-06-2019
  •  | 
  •  

Вопрос

Рисование параллелограмма прекрасно поддерживается с 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 введите описание изображения здесь

нужны некоторые работы

может быть, вы можете использовать это:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top