Yoda Master,
Here is a copy of the c++ code I used. Basically I offsett the text in a circle for the stroke width and then over write the foreground text.
static void DrawOutlined(Font^ Font, int X, int Y, Alignment Align, String^ Text, int StrokeWidth, System::Drawing::Color FillColour, System::Drawing::Color StrokeColour)
{
int iWidth, iLoop;
StrokeColour=System::Drawing::Color::FromArgb(10,StrokeColour.R,StrokeColour.G,StrokeColour.B);
for(iWidth=1; iWidth<StrokeWidth; iWidth++)
{
for(iLoop=0; iLoop<360; iLoop+=5)
{
double cos, sin;
cos = iWidth * System::Math::Cos((iLoop) * (System::Math::PI / 180));
sin = iWidth * System::Math::Sin((iLoop) * (System::Math::PI / 180));
D3D_DrawText(Font->GetFont(), X - (int)sin , Y - (int)cos , (int)Align,(LPTSTR)System::Runtime::InteropServices::Marshal::StringToHGlobalAuto(Text).ToInt32() , (DWORD)StrokeColour.ToArgb());
}
}
D3D_DrawText(Font->GetFont(), X , Y , (int)Align,(LPTSTR)System::Runtime::InteropServices::Marshal::StringToHGlobalAuto(Text).ToInt32() , (DWORD)FillColour.ToArgb());
}