График функции на печать

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

График функции на печать

Сообщение Тимофей » 28.03.2005 (Пн) 8:23

Есть массив чисел. По ним в форме в PictureBox строится график методом Line. Затем этот график надо распечать. Я пользуюсь ActiveReports. Можно туда копировать как изображение, но получается не совсем красиво. Надо еще оси прорисовывать, и разметку наносить. Хотя есть вариант использовать построитель графиков Exсel. Но не зная как там построить график во время выполнения. Может кно-нибудь что подскажет.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 28.03.2005 (Пн) 8:43

В ActiveReports рисовать можно на объекте Canvas - cм. методы этого объекта. Excel пользовать для этой цели криво.

Для графиков можно использовать один из соответствующих контролов, например ComponentOne Chart 8.0...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 28.03.2005 (Пн) 8:52

Конечно цена ComponentOne Chart 8.0 в 455$ не совсем для Росии....

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 28.03.2005 (Пн) 8:56

Тимофей писал(а):Конечно цена ComponentOne Chart 8.0 в 455$ не совсем для Росии....


Ну рисуй сам. Или используй другой компонент графика, хоть родной от VB6. Или... Ну не буду я учить людей плохому...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.03.2005 (Пн) 10:00

Можно, наверное, через Excel. Для этого из программы создаешь книгу Экселя, заносишь в ячейки свой массив чисел, а потом строишь по ним Chart, довольно удобно это делать через метод ChartWizard.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 28.03.2005 (Пн) 11:46

Строит диаграмму через ChartWizard: в примере данные во 2 столбце, подписи оси Х - 1-й столбец (48 строк данных используется). Подправишь под себя как тебе надо.
Код: Выделить всё

Dim excell As Object
Dim отчет As Object
Set excell = CreateObject("Excel.Application")
Set отчет = excell.Workbooks.Add
path_to="путь куда записать - со слешем в конце"
имя_отчета="имя без расширения"
'-------------подписи диаграммы---------------
dname$ = "Легенда"
xtitle$ = "Подпись оси Х"
razm$ = "Подпись оси Y"
'---------заполнение данными-----------
отчет.Worksheets(1).Cells(1, 2) = 5
'......

'---------заполнение подписей-----------
отчет.Worksheets(1).Range("A1:A48").NumberFormat = "@"
отчет.Worksheets(1).Cells(1, 1) = "00-00"
'......
'-----------построение диаграммы-------------
отчет.Charts.Add
отчет.ActiveChart.ChartType = xlColumnClustered
отчет.ActiveChart.SetSourceData Source:=отчет.Worksheets(1).Range("B1:B48"), PlotBy:= _
        xlColumns
отчет.ActiveChart.SeriesCollection(1).XValues = отчет.Worksheets(1).Range("A1:A48")
отчет.ActiveChart.Location Where:=xlLocationAsNewSheet
With отчет.ActiveChart
        .HasLegend = False
        .HasTitle = True
        .ChartTitle.Characters.Text = dname$ 'имя диаграммы
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = xtitle$ 'подпись оси Х
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = razm$ 'подпись оси Y
End With
отчет.ActiveChart.PlotArea.Interior.ColorIndex = xlNone
отчет.ActiveChart.ApplyDataLabels AutoText:=True, LegendKey:=False, _
        HasLeaderLines:=False, ShowSeriesName:=False, ShowCategoryName:=False, _
        ShowValue:=True, ShowPercentage:=False, ShowBubbleSize:=False
отчет.ActiveChart.SeriesCollection(1).DataLabels.AutoScaleFont = True
отчет.ActiveChart.SeriesCollection(1).DataLabels.Font.Size = 8 'значения
отчет.ActiveChart.SeriesCollection(1).DataLabels.Font.Underline = xlUnderlineStyleNone
отчет.ActiveChart.SeriesCollection(1).DataLabels.HorizontalAlignment = xlCenter
отчет.ActiveChart.SeriesCollection(1).DataLabels.VerticalAlignment = xlCenter
отчет.ActiveChart.SeriesCollection(1).DataLabels.ReadingOrder = xlContext
отчет.ActiveChart.SeriesCollection(1).DataLabels.Position = xlLabelPositionOutsideEnd
отчет.ActiveChart.SeriesCollection(1).DataLabels.Orientation = xlUpward
отчет.ActiveChart.Axes(xlCategory).TickLabels.AutoScaleFont = True
отчет.ActiveChart.Axes(xlCategory).TickLabels.Font.Size = 6 ' подпись оси Х
отчет.ActiveChart.Axes(xlCategory).TickLabels.Orientation = xlUpward
отчет.SaveAs (path_to + имя_отчета + ".xls")
excell.Quit
Set excell = Nothing
Set отчет = Nothing


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 133

    TopList