 <p>if you order your points like this:</p> <pre><code>int smX = startPoint.X &lt; finalPoint.X ? startPoint.X : finalPoint.X; int bgX = startPoint.X &lt; finalPoint.X ? finalPoint.X : startPoint.X; int smY = startPoint.Y &lt; finalPoint.Y ? startPoint.Y : finalPoint.Y; int bgY = startPoint.Y &lt; finalPoint.Y ? finalPoint.Y : startPoint.Y; </code></pre> <p>You can imagine a rectangle with the points:</p> <pre><code>(smX, smY) (smX, bgY) (bgX, smY) (bgX, bgY) </code></pre> <p>So you could use the middle of the rectangle to set a point of triangle, than draw a triangle with the points:</p> <pre><code>(smX, bgY) (bgX, bgY) (smX + ((bgX - smX) / 2), smY) </code></pre>