Как получить использование графики в Data Dynamics.ActiveReports 2.0 с использованием VB.Net? - PullRequest
0 голосов
/ 09 февраля 2010

Я хочу применить цвет градиента на фоне текстового поля в активном отчете. Для этого я использую графику и использую следующий код:

 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()

Хорошо работает в формах, но в отчете не может получить объект Graphics от Me.CreateGraphics. Пожалуйста, предложите

1 Ответ

0 голосов
/ 09 февраля 2010

Вы можете сделать это в ActiveReports, используя Picture Control. Просто добавьте изображение градиента в элемент управления рисунками ActiveReports и поместите элемент управления изображением в то же место, что и текстовое поле. Чтобы учесть тот факт, что текстовое поле может увеличивать наше сжатие на основе данных во время выполнения (из-за свойств CanGrow и CanShrink), вы должны использовать следующий код в событии форматирования раздела, содержащего элемент управления textbox & picture:

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

К вашему сведению: метод CreateGraphics, который вы использовали, представляет собой особый способ рисования в Windows Forms. В дополнение к работе в формах Windows ActiveReports должен работать в средах, отличных от Windows Forms, поэтому, к сожалению, мы не можем использовать этот точный метод с ActiveReports.

Вы также можете рисовать на странице ActiveReports, используя класс DataDynamics.ActiveReports.Document.Page, аналогично тому, как вы рисуете на графике. К сожалению, немного сложно сопоставить каждое текстовое поле с соответствующей позицией на каждой странице, что необходимо для рисования градиентов в текстовом поле, поэтому я думаю, что первое решение лучше.

Я также предложил группе управления продуктами ActiveReports рассмотреть функцию, позволяющую сделать этот способ лучше в будущем. Он будет отслеживаться по делу № 142836.

Надеюсь, это полезно!

...