色々やってみてめんどくさかったので、適当にメモとっとく。DirectXがマジでわかんね……3Dなんなの一体。
//ビットマップを作成
Bitmap map = new Bitmap(tex_width, tex_height);
//グラフィックを作成
Graphics g = Graphics.FromImage(map);
//フォントと、そのフォーマットを作成(縦書き)
StringFormat sf = new StringFormat();
sf.FormatFlags = StringFormatFlags.DirectionVertical;
System.Drawing.Font font = new System.Drawing.Font("@MS ゴシック", font_size);
SolidBrush brush = new SolidBrush(XorColor(tex_color));
//下塗り
g.FillRectangle(new SolidBrush(tex_color), 0, 0, tex_width, tex_height);
//文字を書き込む
g.DrawString(write_str, font, brush, 0, 0, sf);
//メモリストリームの作成
MemoryStream mstream = new MemoryStream(BitmapToByteArray(map));
//テクスチャに設定
tex = TextureLoader.FromStream(device, mstream);
すいませんけども、結構省いたりしてるんで、分からないところがあれば指摘してくださいな。
/// <summary>
/// ビットマップからbyte配列を作成
/// </summary>
/// <param name="img">変換したいビットマップ</param>
/// <returns>変換したbyte配列</returns>
public static byte[] BitmapToByteArray(Bitmap img)
{
ImageConverter imgconv = new ImageConverter();
return (byte[])imgconv.ConvertTo(img, typeof(byte[]));
}
/// <summary>
/// 色を反転して返す(タイトル名を描画するときに使用する=本体の色とは逆の色にする)
/// </summary>
/// <param name="color">変換する色</param>
/// <returns>変換した色</returns>
private static Color XorColor(Color color)
{
return Color.FromArgb(color.R ^ 255, color.G ^ 255, color.B ^ 255);
}