色々やってみてめんどくさかったので、適当にメモとっとく。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); }