C1PrintDocumentには、インラインと非インラインの2種類のスタイルがあります。オブジェクトがStyle プロパティを持つ場合、そのプロパティはオブジェクトのインラインスタイルを参照します。インラインスタイルはオブジェクトに不可欠です。インラインスタイルは削除も設定もできません。これは、オブジェクトと共に常に存在するスタイルインスタンスを参照する読み取り専用プロパティです。このため、スタイルのプロパティはオブジェクト自身のプロパティと見なすことができます。ただし、継承のため、スタイルには大きな柔軟性があり、メモリ効率も優れています。
さらに、各 Style には、どのオブジェクトにも直接アタッチされていないスタイルのコレクションChildrenが含まれています。代わりに、これらの非インラインスタイルを親スタイル(スタイルのプロパティ Parent と AmbientParent を参照)として使用して、他のスタイルインラインスタイルを含むの継承プロパティの値を提供できます。
スタイルオブジェクト自体を独立に作成することはできません。スタイルオブジェクトは常に、描画オブジェクトなどのドキュメントの要素に直接アタッチされたインラインスタイル、または別のスタイルの Children コレクションのメンバとして作成されます。
たとえば、次のコードはコンパイルされません。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Style s = new Style() 'コンパイルされません。 s.Borders.All = New LineDef("1mm", Color.Red) Dim rt As New RenderText("My text.") rt.Style = s |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); Style s = new Style(); // コンパイルされません。 s.Borders.All = new LineDef("1mm", Color.Red); RenderText rt = new RenderText("My text."); rt.Style = s; |
一方、このコードはコンパイルされ、希望する結果が得られます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim doc As New C1PrintDocument() Dim s As doc.Style.Children.Add() s.Borders.All = New LineDef("1mm", Color.Red) RenderText rt = New RenderText("My text.") rt.Style.Parent = s |
C# コードの書き方
C# |
コードのコピー
|
---|---|
C1PrintDocument doc = new C1PrintDocument(); Style s = doc.Style.Children.Add(); s.Borders.All = new LineDef("1mm", Color.Red); RenderText rt = new RenderText("My text."); rt.Style.Parent = s; |
アンビエントおよび非アンビエントスタイル属性と親についての詳細は、アンビエントおよび非アンビエントスタイルプロパティを参照してください。