Reports for WinForms
表示オブジェクトの相対位置決め方式の例
C1PrintDocument の使い方 > 描画オブジェクト > 描画オブジェクトの包含、配置、スタック規則 > 表示オブジェクトの相対位置決め方式の例

以下に、オブジェクトの相対位置決め方式を使用して、画像とテキストを配置するいくつかの例を示します(サンプル内の「myImage」は、コードの他の場所で宣言された System.Drawing.Image 型のオブジェクトです)。

このコードは、オブジェクトを次々に標準ブロックフローに単純に追加する画像の下にテキストを配置します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
ra.Children.Add(ri)
ra.Children.Add(rt)
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
ra.Children.Add(ri);
ra.Children.Add(rt);
doc.Body.Children.Add(ra);

このコードは、子が領域に逆順で追加される場合に同じ結果(画像の下のテキスト)を生成します(両方のオブジェクトに自動調整されない座標が明示的に指定されているため、どちらもブロックフローに挿入されません)。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
' 親の上部に画像を配置します。
ri.Y = 0
' 次の兄弟の下にテキストを配置します。
rt.Y = "next.bottom"
' テキストの幅を自動調整します。
rt.Width = Unit.Auto
ra.Children.Add(ri)
ra.Children.Add(rt)
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
// 親の上部に画像を配置します。
ri.Y = 0;
// 次の兄弟の下にテキストを配置します。
rt.Y = "next.bottom";
// テキストの幅を自動調整します。
rt.Width = Unit.Auto;
ra.Children.Add(rt);
ra.Children.Add(ri);
doc.Body.Children.Add(ra);

以下のコードは、標準ブロックフローに画像を挿入すると共に、テキストを画像の右側に配置し、画像に対して垂直方向に中央揃えします。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
ra.Children.Add(ri)
rt.Width = Unit.Auto
' 画像の次にテキストを追加します。
ra.Children.Add(rt)
rt.X = "prev.right"
rt.Y = "prev.height/2-self.height/2"
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
ra.Children.Add(ri);
rt.Width = Unit.Auto;
// 画像の次にテキストを追加します。
ra.Children.Add(rt);
rt.X = "prev.right";
rt.Y = "prev.height/2-self.height/2";
doc.Body.Children.Add(ra);

このコードは、画像の右側にテキストを配置し、垂直方向に中央揃えしますが、相対 ID「prev」ではなく位置決め式で RenderObject.Name も使用します。また、式で絶対長さを使用した結果、テキストが右に 2 mm 移動します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
ri.Name = "myImage"
rt.Width = "auto"
rt.X = "myImage.right+2mm"
rt.Y = "myImage.height/2-self.height/2"
ra.Children.Add(ri)
ra.Children.Add(rt)
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
ri.Name = "myImage";
rt.Width = "auto";
rt.X = "myImage.right+2mm";
rt.Y = "myImage.height/2-self.height/2";
ra.Children.Add(ri);
ra.Children.Add(rt);
doc.Body.Children.Add(ra);

以下のコードは、組み込み Max 関数を使用してテキストが右に少なくとも 6cm 移動するように同じ例を変更します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
ri.Name = "myImage"
rt.Width = "auto"
rt.X = "Max(myImage.right+2mm,6cm)"
rt.Y = "myImage.height/2-self.height/2"
ra.Children.Add(ri)
ra.Children.Add(rt)
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
ri.Name = "myImage";
rt.Width = "auto";
rt.X = "Max(myImage.right+2mm,6cm)";
rt.Y = "myImage.height/2-self.height/2";
ra.Children.Add(ri);
ra.Children.Add(rt);
doc.Body.Children.Add(ra);

以下のコードスニペットは、画像をページの右側に配置すると共に(表示領域の幅にデフォルト値である親の幅を使用して)、テキストを左揃えにし、画像に対して垂直方向に中央揃えします。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc as New C1PrintDocument
Dim rt as New RenderText("test")
Dim ri as New RenderImage(myImage)
Dim ra As New RenderArea()
ri.Name = "myImage"
' 画像を右揃えにします。
ri.X = "parent.right-width"
' テキストを左揃えにします。
rt.X = "0"
rt.Y = "myImage.height/2-height/2"
ra.Children.Add(ri)
ra.Children.Add(rt)
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderText rt = new RenderText("test");
RenderImage ri = new RenderImage(myImage);
RenderArea ra = new RenderArea();
ri.Name = "myImage";
// 画像を右揃えにします。
ri.X = "parent.right-width";
// テキストを左揃えにします。
rt.X = "0";
rt.Y = "myImage.height/2-height/2";
ra.Children.Add(ri);
ra.Children.Add(rt);
doc.Body.Children.Add(ra);