Bartosz Kosiorek (@gang65) commented about dlls/gdiplus/graphicspath.c:
endpoint->Y + perp_dy, PathPointTypeLine); break; }
- case LineCapArrowAnchor:
- {
REAL segment_dy = nextpoint->Y - endpoint->Y;
REAL segment_dx = nextpoint->X - endpoint->X;
REAL segment_length = sqrtf(segment_dy * segment_dy + segment_dx * segment_dx);
REAL par_dx = pen_width * segment_dx / segment_length;
REAL par_dy = pen_width * segment_dy / segment_length;
REAL perp_dx = -par_dy;
REAL perp_dy = par_dx;
*last_point = add_path_list_node(*last_point, endpoint->X + 1.75 * par_dx + perp_dx,
Length of the arrow value (1.75) was taken experimentally (it is not documented), by coparison generated arrows with native and buildin gdiplus dll.