Here is a function I cooked up which creates a Color from HSL values in the range 0-239. It seems to work exactly as the one in the choose colour dialog does:
Private Function ColorHSL(ByVal hue As Integer, ByVal sat As Integer, ByVal lum As Integer) As Color
Dim r, g, b As Double
Dim dblhue, dbllum, dblsat As Double
Dim temp As Double
hue = hue Mod 240
sat = sat Mod 240
lum = lum Mod 240
dblhue = Convert.ToDouble(hue)
dblsat = Convert.ToDouble(sat)
dbllum = Convert.ToDouble(lum)
'Hue
If hue < 80 Or hue > 160 Then
If hue > 160 Then temp = 240 - dblhue Else temp = dblhue
If (temp > 40) Then temp = temp - 40 Else temp = 0
r = 255 - (temp * 6.375)
End If
If hue < 160 Then
temp = Math.Abs(dblhue - 80)
If (temp > 40) Then temp = temp - 40 Else temp = 0
g = 255 - (temp * 6.375)
End If
If hue > 80 Then
temp = Math.Abs(dblhue - 160)
If (temp > 40) Then temp = temp - 40 Else temp = 0
b = 255 - (temp * 6.375)
End If
'Saturation
r = r + ((127 - r) * (dblsat / 240))
g = g + ((127 - g) * (dblsat / 240))
b = b + ((127 - b) * (dblsat / 240))
'Luminosity
If lum > 120 Then
r = r + ((255 - r) * ((dbllum - 120) / 120))
g = g + ((255 - g) * ((dbllum - 120) / 120))
b = b + ((255 - b) * ((dbllum - 120) / 120))
ElseIf lum < 120 Then
r = r * (dbllum / 120)
g = g * (dbllum / 120)
b = b * (dbllum / 120)
End If
Return Color.FromArgb(Convert.ToInt32(r), Convert.ToInt32(g), Convert.ToInt32(b))
End Function
Hope that helps.