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 获取图形对象。请建议

4

1 回答 1

0

您可以使用图片控件在 ActiveReports 中完成此操作。只需将渐变图像添加到 ActiveReports 图片控件并将图片控件放置在与文本框相同的位置即可。考虑到文本框可能会根据运行时的数据(由于 CanGrow 和 CanShrink 属性)而扩大我们的收缩量这一事实,您应该在包含文本框和图片控件的部分的格式事件中使用以下代码:

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

仅供参考:您使用的 CreateGraphics 技术是一种特定于 Windows 窗体的绘画方式。除了在 Windows 窗体中工作之外,ActiveReports 还必须在 Windows 窗体以外的环境中工作,所以很遗憾,我们不能在 ActiveReports 中使用这种精确的技术。

您还可以使用 DataDynamics.ActiveReports.Document.Page 类在 ActiveReports 页面上绘制,其方式与在 Graphics 上绘制的方式类似。不幸的是,将每个文本框映射到它的相应位置有点棘手,每个页面都需要在文本框上绘制渐变,所以我认为前一种解决方案是最好的。

我还向 ActiveReports 产品管理团队提出了一项建议,以考虑一项功能,以便在未来以更好的方式做到这一点。它将在案例#142836 下进行跟踪。

我希望这是有帮助的!

于 2010-02-09T17:40:44.510 回答