|
分類:[.NET 全般]
環境:Windows10、VS2019のC#WinForm
初めましてお世話になります。
縦表示(90度回転)かつ自動で文章を折り返す機能を追加したいと
考えています。
横表示は1行ごとにLabelで対応していましたが、縦表示だと難しく
なりそうだったのでPictureBoxに文章を描画しました。
private void View(PaintEventArgs e)
{
string text1 = "あい漢字お か書道けこ さしすケボー たちつてと はひふへほ" +
"まみむめもあい漢字お か書道けこ さしすケボー たちつてと" +
"はひふへほ まみむめも";
using (Font font1 = new Font("Arial", 22, FontStyle.Bold, GraphicsUnit.Pixel))
{
SizeF size = e.Graphics.MeasureString(text1, font1);
RectangleF rectF1 = new RectangleF(900, 0, 500, 500);
e.Graphics.TranslateTransform(0, size.Width);
e.Graphics.RotateTransform(-90f);
e.Graphics.DrawString(text1, font1, Brushes.Black, rectF1);
e.Graphics.DrawRectangle(Pens.White, Rectangle.Round(rectF1));
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
View(e);
}
サンプルは想定した動きに見えますが、本当は1行ごとに長さの違
う文章を読み込んでおり――
RectangleF rectF1 = new RectangleF(900, 0, 500, 500);
rectF1は文章の長さによって適切な値に変えられるようにしたいの
ですが、どう計算したらいいか、わからない状況です。
よろしくお願いします。
|