Gibt es eine Möglichkeit, ein Bild so zu zeichnen, dass es 4 statt 3 Punkte verwendet (Perspektivverzerrung)?

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

  •  09-06-2019
  •  | 
  •  

Frage

Das Zeichnen eines Parallelgramms wird mit Graphics.DrawImage gut unterstützt:

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 machen Sie 4 Punkte (das Folgende wird natürlich nicht unterstützt, ist aber gewollt):

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);
}
War es hilfreich?

Lösung

Das Nächste, was ich finden kann, ist diese Information, was extrem verzögert ist.

Andere Tipps

Normalerweise würden Sie dies mit einer 3x3-Matrix tun, aber mit der Matrix-Klasse können Sie nur 6 statt 9 Werte angeben.Möglicherweise können Sie dies in Direct X tun.

Wenn man darüber nachdenkt, wie 3D-Tools damit umgehen würden ...Versuchen Sie, ein Dreieck aus einer Hälfte und dann das andere Dreieck für die andere Hälfte zu zeichnen.Wenn Sie also die Punkte A, B, C und D haben;Sie würden (mit einer Schnittebene) A, B, C und dann B, C, D oder etwas in der Art zeichnen.

Ich habe den folgenden Artikel in CodeProject gefunden:Kostenlose Bildtransformation von YLS enter image description here

braucht einige Arbeiten

vielleicht kannst du das nutzen :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top