Todo lo imaginable es posible con el GDI de .Net
, mira este ejemplo:
Un proyecto Windows Forms vació, carga una imagen, crea un objeto GraphicPath y agrega los puntos que conforman el Polígono, obtiene la región que ocupa dicho Polígono, luego recorre cada Rectángulo que conforma la región pintando cada parte de la Imagen con ayuda de la función Offset que mueve los ejes hacia el Origen deseado (El punto desde donde se comenzara a Dibujar la Imagen) y el Destino (El punto desde donde se cortara el polígono en la imagen).
Imports System.Drawing.Drawing2D
Public Class Form1
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim Imagen As Image = Image.FromFile("C:\Ejemplo.JPG")
Dim Forma As New GraphicsPath
Forma.AddPolygon(New PointF() {New PointF(10, 20), New PointF(250, 35), New PointF(150, 200)})
Dim Poligono As New Region(Forma)
Dim Origen As New Point(10, 10), Destino As New Point(20, 20)
Dim RectanguloOrigen As RectangleF, RectanguloDestino As RectangleF
For Each Rectangulo As RectangleF In Poligono.GetRegionScans(New Matrix)
RectanguloOrigen = Rectangulo : RectanguloOrigen.Offset(Origen)
RectanguloDestino = Rectangulo : RectanguloDestino.Offset(Destino)
e.Graphics.DrawImage(Imagen, RectanguloOrigen, RectanguloDestino, GraphicsUnit.Pixel)
Next
End Sub
End Class