C1PrintDocumentの文字列に囲み枠の指定

f:id:ace_taka:20140616110144j:plain

 

 Private Sub MakeDoc1(ByVal doc As C1PrintDocument)
        ' ドキュメントのタイトルを作成
        Dim rp As New RenderParagraph()

      rp = New RenderParagraph()
        'フォントの指定

        rp.Style.Font = New Font("MS Pゴシック", 36)
  '文字列の指定

        rp.Content.Add(New ParagraphText("ここに文字列を入力", TextPositionEnum.Normal))
  '文字の表示

        doc.Body.Children.Add(rp)
  

   ' GetCharRectメソッドを使用するためには、文字の位置を計算するために
        ' まず最初にドキュメントを作成しなければなりません。
        ' その後再びドキュメントを作成して、個々の文字の周囲に
        ' 赤い四角形を描画します。
        doc.Generate()

         Dim textLength As Integer = rp.TextLength
        ' フラグメントには描画オブジェクトに関する情報が含まれます:
        ' rpオブジェクトの最初のフラグメントを取得
        Dim rpf As RenderParagraphFragment = CType(rp.Fragments(0), RenderParagraphFragment)
        ' テキストの中のすべての文字に対して繰り返し
        Dim i As Integer
        For i = 0 To textLength - 1
            ' 文字の座標を取得
            ' 座標はC1PrintDocument.ResolvedUnit単位で返却されます
            Dim charRect As RectangleD = rpf.GetCharRect(i)

 

            ' 文字を囲む四角形を作成

           Dim r As New RenderRectangle()
            ' すべての四角形の座標を指定
            r.X = New Unit(rpf.Bounds.Left + charRect.Left, doc.ResolvedUnit)
            r.Y = New Unit(rpf.Bounds.Top + charRect.Top, doc.ResolvedUnit)
            r.Width = New Unit(charRect.Width, doc.ResolvedUnit)
            r.Height = New Unit(charRect.Height, doc.ResolvedUnit)
            ' 図形(四角形)の座標をオブジェクトの相対位置で指定
            r.Rectangle.X = 0
            r.Rectangle.Y = 0
            r.Rectangle.Width = r.Width
            r.Rectangle.Height = r.Height
            r.Style.ShapeLine = New LineDef("1pt", Color.Blue)
            ' オブジェクトに四角形を追加
            doc.Body.Children.Add(r)
        Next i
    End Sub