0

アクティブなレポートのテキスト ボックスの背景にグラデーション カラーを適用したいと考えています。このために、グラフィックを使用し、次のコードを使用します。

 Dim a As New System.Drawing.Drawing2D.LinearGradientBrush(New RectangleF(0, 0, Me.Width, Me.Height), color1, color2, mode)
        Dim g As Graphics = Me.CreateGraphics
        g.FillRectangle(a, New RectangleF(0, 0, Me.Width, Me.Height))
        g.Dispose()

フォームではうまく機能しますが、レポートでは Me.CreateGraphics で Graphics のオブジェクトを取得できません。提案してください

4

1 に答える 1

0

ピクチャ コントロールを使用して、ActiveReports でこれを実現できます。ActiveReports ピクチャ コントロールにグラデーション イメージを追加し、ピクチャ コントロールをテキスト ボックスと同じ場所に配置するだけです。(CanGrow プロパティと CanShrink プロパティにより) 実行時のデータに基づいてテキスト ボックスが縮小される可能性があるという事実を考慮するには、テキスト ボックスと画像コントロールを含むセクションのフォーマット イベントで次のコードを使用する必要があります。

public void Detail1_Format()
{
    this.gradientPicture.Height = this.txtCustomerID1.Height;   
}

参考までに: あなたが使用した CreateGraphics 手法は、Windows フォーム固有の描画方法です。Windows フォームでの作業に加えて、ActiveReports は Windows フォーム以外の環境でも動作する必要があるため、残念ながら ActiveReports でこの正確な手法を使用することはできません。

Graphics に描画するのと同様の方法で、DataDynamics.ActiveReports.Document.Page クラスを使用して ActiveReports ページに描画することもできます。残念ながら、テキストボックスにグラデーションを描画するために必要なすべてのページの対応する位置に各テキストボックスをマップするのは少し難しいので、前者のソリューションが最適だと思います。

また、ActiveReports 製品管理チームに対して、将来的にこれを行うためのより良い方法を可能にする機能を検討するよう提案しました。ケース #142836 で追跡されます。

これがお役に立てば幸いです。

于 2010-02-09T17:40:44.510 に答える