2008-09-01 11 views
1

Zeichnung, die ein parallelgram schön mit Graphics.DrawImage unterstützt:Gibt es eine Möglichkeit, ein Bild zu zeichnen 4 Punkte zu verwenden, anstatt 3 (Perspektive Kette)

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); 

Wie tun Sie, 4 Punkte (offensichtlich die folgende wird nicht unterstützt, aber das ist, was gewünscht wird):

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); 
} 

Antwort

1

Normalerweise würden Sie dies mit einer 3x3-Matrix, aber die Matrix-Klasse kann nur sechs Werte geben Sie statt 9. könnten Sie in der Lage sein zu tun, dies in Direct X.

0

Wenn Sie darüber nachdenken, wie 3D-Tools damit umgehen würden ... versuchen, ein Dreieck der einen Hälfte und dann das andere Dreieck für die andere Hälfte zu zeichnen. Also, wenn Sie Punkte haben A, B, C, & D; Sie würden (mit einer Clippingebene) A, B, C und dann B, C, D oder etwas von der Art zeichnen.

Verwandte Themen