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. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/1539#note_17492