¿Hay alguna manera de dibujar una imagen para usar 4 puntos en lugar de 3 (deformación de perspectiva)?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

Dibujar un paralelogramo es muy compatible con 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);

¿Cómo se hacen 4 puntos (obviamente lo siguiente no es compatible, pero esto es lo que se quiere):

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);
}
¿Fue útil?

Solución

Lo más cercano que puedo encontrar es esta informacion, que es extremadamente lento.

Otros consejos

Normalmente harías esto con una Matrix de 3x3, pero la clase Matrix solo te permite especificar 6 valores en lugar de 9.Es posible que puedas hacer esto en Direct X.

Al pensar en cómo lo manejarían las herramientas 3D...intenta dibujar un triángulo de una mitad y luego el otro triángulo para la otra mitad.Entonces, si tienes los puntos A, B, C y D;dibujarías (con un plano de recorte) A, B, C y luego B, C, D, o algo por el estilo.

Encontré el siguiente artículo en CodeProject:Transformación de imagen gratuita por YLS enter image description here

necesita algunas obras

tal vez puedas usar esto :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top