Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Me.ListBox1.Items.Clear()
Me.ListBox1.Anchor = AnchorStyles.Top Or AnchorStyles.Left Or AnchorStyles.Right
Me.PictureBox1.Height = 178
Me.PictureBox1.Width = 400
Dim str As String = "Pixtack紫陽花"
str = "ターン"
Dim w As Integer = Me.PictureBox1.Width
Dim h As Integer = Me.PictureBox1.Height
Dim bmp As New Bitmap(w, h)
Dim g As Graphics = Graphics.FromImage(bmp)
Dim b As New SolidBrush(Color.Black)
Dim font As New Font("Meiryo UI", 30, FontStyle.Regular)
Dim rect As New Rectangle(New Point(0, 0), New Size(w, h))
Dim sf As New StringFormat()
Dim sizeCanvas As SizeF = g.MeasureString(str, font, New PointF(0, 0), sf)
Dim rectC As New RectangleF(New PointF(0, 0), sizeCanvas)
Dim wRectF As RectangleF
Dim wRect As Rectangle
Dim drawRange As New List(Of DrawRange2描画範囲)
Dim bmpList As New List(Of Bitmap)
Const WORD_SPACE As Integer = 1
For i As Integer = 0 To str.Length - 1
bmp = New Bitmap(w, h)
g = Graphics.FromImage(bmp)
wRectF = New RectangleF(New PointF(0, 0), g.MeasureString(str.Chars(i), font, New PointF(0, 0), sf))
wRect = Rectangle.Round(wRectF)
bmp = New Bitmap(wRect.Width + 1, wRect.Height + 1)
g = Graphics.FromImage(bmp)
g.DrawString(str.Chars(i), font, b, wRect, sf)
drawRange.Add(DrawRange2描画範囲情報(bmp))
Me.ListBox1.Items.Add(str.Chars(i) & " = " & drawRange.Item(i).myString1())
bmpList.Add(bmp)
Next
For i = 0 To str.Length - 1
Me.ListBox1.Items.Add(str.Chars(i) & " = " & drawRange.Item(i).myString2())
Dim RY As String = str.Chars(i) & "_RightY = "
Dim LY As String = "LeftY = "
For j As Integer = 0 To drawRange(i).RightY.Count - 1
RY &= drawRange(i).RightY(j) & ", "
Next
For j = 0 To drawRange(i).LeftY.Count - 1
LY &= drawRange(i).LeftY(j) & ", "
Next
Me.ListBox1.Items.Add(RY & LY)
Next
bmp = New Bitmap(w, h)
g = Graphics.FromImage(bmp)
Dim drawPoint2 As New Point(-drawRange(0).LeftX + WORD_SPACE, 0)
g.DrawString(str.Chars(0), font, b, drawPoint2, sf)
Dim dSize As SizeF = g.MeasureString(str.Chars(0), font, New PointF(0, 0), sf)
Dim rRect As New Rectangle(Point.Round(drawPoint2), dSize.ToSize())
For i = 1 To str.Length - 1
dSize = g.MeasureString(str.Chars(i), font, New PointF(0, 0), sf)
Dim word2左空間 As Integer = LeftSpace指定座標の距離一覧(bmpList(i), drawRange(i - 1)).Left
Dim w1RAndW2L As Integer = drawRange(i - 1).RightSpace + word2左空間
Dim word1右空間 As Integer = LeftSpace指定座標の距離一覧(bmpList(i - 1), drawRange(i)).Right
Dim w1LAndw2R As Integer = drawRange(i).LeftX + word1右空間
Dim wordSpace As Integer = Math.Min(w1LAndw2R, w1RAndW2L)
drawPoint2.X = drawPoint2.X + drawRange(i - 1).AllSize.Width - wordSpace + WORD_SPACE
g.DrawString(str.Chars(i), font, b, drawPoint2, sf)
rRect = New Rectangle(drawPoint2, dSize.ToSize())
Next
Me.PictureBox1.Image = bmp
g.Dispose()
b.Dispose()
sf.Dispose()
End Sub