2014-01-15 3 views
4

Я не понимаю, как создать контроль диаграммы и поместить график в существующую форму. Все примеры, которые я нашел в Интернете, показывают диаграмму в новой форме, но я хотел бы добавить диаграмму в одну из моих существующих форм.Как отобразить график FSharp.Charting в существующей форме?

Я имею в виду что-то вроде этого:

let form = new Form(Text="My form") 
let lbl = new Label(Text="my label") 
let chart = Chart.Area ["a", 10; "b", 20] 

form.Controls.Add lbl 
form.Controls.Add chart 
// ---> The type 'ChartTypes.GenericChart' is not compatible with the type 'Control' 
Application.Run(form) 

Спасибо!

+0

'form.Controls.Add myChart'? – ildjarn

+0

Я имел в виду элементы управления вместо контейнера в исходном коде. Все еще не работает. Я полагаю, что должно быть что-то вроде ChartControl где-то – vidi

ответ

15

Для этого вы должны обернуть свою диаграмму в FSharp.Charting.ChartTypes.ChartControl и позаботиться о правильной стыковке. Также не следует смешивать Chart от FSharp.Charting с Chart от System.Windows.Forms.DataVisualization.Charting.

Хорошей точкой отсчета может быть следующий полностью функциональный образец, который работает с текущим FSharp.Charting v0.90.5; также ссылки должны System.Drawing и System.Windows.Forms:

open System 
open FSharp.Charting 
open FSharp.Charting.ChartTypes 
open System.Drawing 
open System.Windows.Forms 

[<STAThread; EntryPoint>] 
let main args = 
    let myChart = [for x in 0.0 .. 0.1 .. 6.0 -> sin x + cos (2.0 * x)] 
        |> Chart.Line |> Chart.WithYAxis(Title="Test") 
    let myChartControl = new ChartControl(myChart, Dock=DockStyle.Fill) 
    let lbl = new Label(Text="my label") 
    let form = new Form(Visible = true, TopMost = true, Width = 700, Height = 500) 
    form.Controls.Add lbl 
    form.Controls.Add(myChartControl) 
    do Application.Run(form) |> ignore 
    0 
+0

Большое спасибо! ChartControl в пространстве имен FSharp.Charting.ChartTypes не является интуитивным вообще. И я не мог найти ни одного примера. – vidi

+1

Причина, по которой вы не уделяете слишком много внимания использованию 'FSharp.Charting' внутри приложений WinForms, возможно, является тем, что в первую очередь используется сценарий для скриптинга библиотеки; то 'WinForms' является довольно устаревшей технологией, более продвинутый' WPF' имеет пример (ы) AFAIK из коробки. –

Смежные вопросы