You have to measure your string like you already did, but then you have to paint your string at the mouseclick's coordinates minus half the string's width to the left and minus half its height to the top, if you want to have the string centered to your mouseclick.
Example:
You click on x/y 100/200 and your string's width and height is 20 pixels. To center the string on the mouseclick's coordinates you have paint it to the location x:90 and y:190
But anyway, as the others told you already, I would prefer to paint a circle or the cross/X myself.
modified:
Try this:
f = new Font(new FontFamily("Times New Roman"), 10);
SizeF sizef = g.MeasureString(str, f);
g.DrawString(str, f, Brushes.Red, ((p.X-sizeF.widtdh/2)), ((p.Y-sizeF.heigth/2)));