Reports for WinForms
テーブルの特定のセルへの2つの画像の追加
クイックスタート > 印刷プレビューを開始する > テーブルを作成する > 3行3列のテーブルの作成 > テーブルの特定のセルへの2つの画像の追加

このトピックは、RenderImage クラスを使用して既存のテーブルの特定のセルに2つの異なる画像を追加する方法を示します。また、ImageAlignHorzEnumを使用してセル内の画像を配置する方法も示します。下のサンプルは、「3行3列のテーブルの作成」で作成した3行3列の空のテーブルを使用します。また、このトピックの手順を完了するには、2つの GIF または JPEG 画像が必要です。次の手順を実行します。

  1. 次のコードが既にソースファイルにある必要があります。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        ' テーブルを作成します。      
        Dim table As C1.C1Preview.RenderTable = New C1.C1Preview.RenderTable(Me.C1PrintDocument1)    
        table.Style.GridLines.All = New C1.C1Preview.LineDef(Color.DarkGray)
    
        Dim r As Integer = 3    
        Dim c As Integer = 3    
        Dim row As Integer    
        Dim col As Integer
        For row = 0 To r - 1 Step +1    
            For col = 0 To c - 1 Step +1    
                Dim celltext As C1.C1Preview.RenderText = New C1.C1Preview.RenderText(Me.C1PrintDocument1)
    
                ' 空のセルを追加します。
                celltext.Text = String.Format("", row, col)    
                table.Cells(row, col).RenderObject = celltext    
            Next    
        Next
    
        ' ドキュメントを生成します。
        Me.C1PrintDocument1.Body.Children.Add(table)    
        Me.C1PrintDocument1.Generate()   
    End Sub
    

    C# コードの書き方

    C#
    コードのコピー
    private void Form1_Load(object sender, System.EventArgs e)    
    {    
        // テーブルを作成します。     
        C1.C1Preview.RenderTable table = new C1.C1Preview.RenderTable(this.c1PrintDocument1);    
        table.Style.GridLines.All = new C1.C1Preview.LineDef(Color.DarkGray);
    
        const int r = 3;    
        const int c = 3;    
        for (int row = 0; row < r; ++row)    
        {
            for (int col = 0; col < c; ++col)    
            {   
                C1.C1Preview.RenderText celltext = new C1.C1Preview.RenderText(this.c1PrintDocument1);    
                celltext.Text = string.Format("", row, col);
    
                // 空のセルを追加します。
                table.Cells[row, col].RenderObject = celltext;    
            }    
        }
    
        // ドキュメントを生成します。
        this.c1PrintDocument1.Body.Children.Add(table);    
        this.c1PrintDocument1.Generate();    
    }
    
  2. 行を追加するコード行の後に次のコードを追加します。新しいコードは、テーブル内の中央のセルのサイズを固定します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' 中央のセルのサイズを固定します。      
    table.Rows(1).Height = New C1.C1Preview.Unit(5, C1.C1Preview.UnitTypeEnum.Cm)    
    table.Cols(1).Width = New C1.C1Preview.Unit(8, C1.C1Preview.UnitTypeEnum.Cm)
    

    C# コードの書き方

    C#
    コードのコピー
    // 中央のセルのサイズを固定します。
    table.Rows[1].Height = new C1.C1Preview.Unit(5, C1.C1Preview.UnitTypeEnum.Cm);    
    table.Cols[1].Width = new C1.C1Preview.Unit(8, C1.C1Preview.UnitTypeEnum.Cm);
    
  3. 2つの JPEG または GIF 画像を作成するか、既にある画像を使用します。
  4. フォームに2つの PictureBox コントロールを追加します。Image プロパティを前のステップで作成した2つの画像に設定します。また、この2つの画像ボックスを非表示にして(VisibleFalse に設定)、フォームの外観を整理します。これらのコントロールは画像の保管場所としてのみ使用されます。画像は C1PrintDocumentにレンダリングされます。
  5. CellStyle プロパティを使用して、セルのコンテンツの基本スタイルを変更します。このサンプルでは、セルの ImageAlign プロパティを変更します。次のコードを入力して、画像の配置を設定します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    ' 画像の配置を設定します。
    table.CellStyle.ImageAlign.StretchHorz = False    
    table.CellStyle.ImageAlign.StretchVert = False    
    table.CellStyle.ImageAlign.AlignHorz = C1.C1Preview.ImageAlignHorzEnum.Center
    

    C# コードの書き方

    C#
    コードのコピー
    // 画像の配置を設定します。
    table.CellStyle.ImageAlign.StretchHorz = false;    
    table.CellStyle.ImageAlign.StretchVert = false;    
    table.CellStyle.ImageAlign.AlignHorz = C1.C1Preview.ImageAlignHorzEnum.Center;
    
  6. C1PrintDocument では、画像が RenderImage クラス(RenderObject のサブクラス)を使用してレンダリングされます。次のように、2つの画像に対応する2つの新しい RenderImage オブジェクトを作成します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    Dim img1 As C1.C1Preview.RenderImage = New C1.C1Preview.RenderImage(Me.C1PrintDocument1)    
    Dim img2 As C1.C1Preview.RenderImage = New C1.C1Preview.RenderImage(Me.C1PrintDocument1)
    

    C# コードの書き方

    C#
    コードのコピー
    C1.C1Preview.RenderImage img1 = new C1.C1Preview.RenderImage(this.c1PrintDocument1);    
    C1.C1Preview.RenderImage img2 = new C1.C1Preview.RenderImage(this.c1PrintDocument1);
    
  7. これらの RenderImage の Image プロパティを画像ボックスに格納した画像に設定します。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    img1.Image = Me.PictureBox1.Image    
    img2.Image = Me.PictureBox2.Image
    

    C# コードの書き方

    C#
    コードのコピー
    img1.Image = this.pictureBox1.Image;    
    img2.Image = this.pictureBox2.Image;
    
  8. これらの RenderImage オブジェクトをセルの RenderObject プロパティに割り当てて、それらのセルに画像がレンダリングされるようにします。

    Visual Basic コードの書き方

    Visual Basic
    コードのコピー
    table.Cells(1, 1).RenderObject = img1    
    table.Cells(1, 2).RenderObject = img2
    

    C# コードの書き方

    C#
    コードのコピー
    table.Cells[1, 1].RenderObject = img1;    
    table.Cells[1, 2].RenderObject = img2;
    
    メモ:テーブルの左上のセルは行0、列0の位置にあります。

プログラムを実行し、次の点を確認します。

テーブルは次のように表示されます。