| 分類:[.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は文章の長さによって適切な値に変えられるようにしたいの ですが、どう計算したらいいか、わからない状況です。 よろしくお願いします。 |