+1  A: 

You want use a bitmap and do something like this. Note this is not runnable code.

    Dim image As New Bitmap(<my_Xsize>, <my_Ysize>)
    Dim gr As Graphics = Graphics.FromImage(image)
    <Draw your FillPolygon>
    <Erase the leftside of the polygon>
    <Draw your Polygon>

     gr.DrawImage(image, <myXcoor>, <myYcoor>)

By using a bitmap you can fiddle down to the pixel level to get the exact thing you want.

RS Conley
That arrow can point in any direction, that's why it is drawn, but I will try rendering an image with a rotation, it's worth trying. No need for draw-erase-draw, a simple PNG image should be fine! Thanks!
Martin Plante
The idea is that you use the bitmap as a intermediate drawing surface. So it will work in any direction.
RS Conley
I can't use this technique, as I'm not garanteed that it will always be the lest side that will look bad on all systems, all .NET fx versions, etc. It's better to use a static arrow PNG image and draw it with a RotateTransform.
Martin Plante
A: 

Hack: Draw the whole arrow as opaque in an intermediate buffer, then draw the whole buffer onto your image using the appropriate transparency.

Pop Catalin
Basically the same suggestion as done by RS Conley, right?
peSHIr
No he suggests to erase the left side of the polygon, I suggest drawing it entirely without transparency on a intermediate buffer, then drawing the image in the buffer using the appropriate transparency.
Pop Catalin