1

パラメータ化されたデータに基づいて独自のカスタム グラフィックを作成し、それをサブレポートに生成したいと考えています。レポートに ActiveReports.Picture 要素を配置しました。次に、System.Drawing.Graphics オブジェクトを使用してメモリ内に画像を描画し、それを Picture コントロールの Image プロパティに設定しました。これは問題なく動作しますが、pdfExport1.ImageQuality を最高に設定した後でも、生成された PDF の画像はぼやけています。

ActiveReports ドキュメント キャンバスに直接描画する方がよいと思いますが、それを機能させる方法がわかりません。そこにあるすべての例は、同じ基本的な例を示しています。

http://www.datadynamics.com/Help/ActiveReports6/topic2107.html

問題は、例が文脈から外れていることです。このコードを実行する場所がわかりません。サブレポート内?呼び出しレポートで?レポート全体を大きくしますか? レポートで試してみたところ、Pages プロパティにはページがありませんでした (インデックスが範囲外のエラーを取得しました)。そのため、間違ったイベントで実行している可能性があります。

明確にするために、これはデータ主導のレポートではありません。パラメータを介して必要なすべてのデータを取得します。DB アクセスは必要ありません。

ありがとう。

4

2 に答える 2

1

参照したドキュメントの例では、DrawLineは(サブレポートではなく)親ドキュメント/レポートに描画されています。ただし、セクションの処理中にページに描画することはできます。これを行うには、 BeforePrintイベントAfterPrintイベントなどのセクションの処理イベント内にレンダリングコードを配置します(Formatを使用する場合は多くの注意事項があるため、Formatの使用は避けます)。

セクションのイベント内からページに描画するには、セクションクラスのCurrentLocationプロパティからセクションの場所を見つけることができます。たとえば、BeforePrintイベントからセクション全体に対角線を引くには、次のコードを使用できます。

public void Detail_BeforePrint(object sender, System.EventArgs eArgs)
{
    this.CurrentPage.BackColor = System.Drawing.Color.Purple;
    this.CurrentPage.ForeColor = System.Drawing.Color.YellowGreen;
    this.CurrentPage.PenStyle = DataDynamics.ActiveReports.Document.PenStyles.Dot;
    this.CurrentPage.PenWidth = 4;
    this.CurrentPage.DrawLine(Detail.CurrentLocation.X, Detail.CurrentLocation.Y, this.PrintWidth, Detail.Height);
}

このコードは、サブレポートまたは親レポート内で正常に機能するはずです。どうやら、サブレポート内からページに描画したい場合は、に変更する必要がありますthis.CurrentPageParentReport.CurrentPageページを基準にして描画する場合は、同様のコードを使用できますが、PageEndイベントを使用します。PageEndイベントのドキュメントに良い例があります。ただし、PageEventsは親レポートに対してのみ機能するため、サブレポートの場所を基準にして図面座標を方向付けるのは難しい場合があります。

于 2012-07-16T19:09:06.073 に答える
0

サブレポートからでも、メイン ページに描画する必要があるようです。そのため、CurrentPage は null です。したがって、サブレポートの次のように機能します。

this.ParentReport.CurrentPage

http://www.datadynamics.com/forums/118838/ShowPost.aspx

于 2012-07-17T02:54:08.590 に答える