Est-il possible de dessiner une image à utiliser 4 points au lieu de 3 (déformation de la perspective)

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

  •  09-06-2019
  •  | 
  •  

Question

Dessin d'un parallelgram est bien pris en charge avec des Graphiques.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);

Comment faites-vous 4 points (évidemment, la suite n'est pas pris en charge, mais c'est ce qui est voulu):

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);
}
Était-ce utile?

La solution

Plus proche que je peux trouver est cette information, ce qui est extrêmement lag.

Autres conseils

Normalement vous devriez le faire avec une Matrice de 3x3, mais la Matrice de classe permet de spécifier 6 valeurs au lieu de 9.Vous pourriez être en mesure de le faire en Direct X.

Lorsque l'on pense de la façon dont les outils 3D manipuler...le dessin d'un triangle de moitié puis l'autre triangle pour l'autre moitié.Donc si vous avez des points A, B, C et D;vous tirage (avec un plan de découpe) A, B, C, puis B, C, D, ou quelque chose du genre.

J'ai trouvé l'article suivant dans CodeProject:Gratuit de Transformation d'Image Par YLS enter image description here

a besoin de quelques travaux

peut-être que vous pouvez l'utiliser :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top