Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Wykres w Delphi. Jak przenieść dane na wykres?

11 Sty 2005 16:02 5025 6
  • Poziom 13  
    Witam
    Słabo programuję ale chcę zrobić wykres w Delphi 7.
    Dane czytam z dysku ( to umię ), są to liczby od 1 do około 400.
    Jak to przenieś na wykres. Okno wykresu ma zajmować około 1/2 ekranu.
    Może ktoś z Szanownych postowiczów podpowie (może parę linii kodu).
    Dzięki
  • Poziom 16  
    Akurat to nie jest chyba zbyt skomplikowane, chociaż nie programowałem nigdy w Delphi. Podaj swpjego meila, to podeślę Ci kawałek książki o robieniu wykresów z wykorzystaniem komponentu TChart.

    Ja natomiast borykam się z innym problemem. Chcę robić wykresy punkt po punkcie. Tzn, np klikając w przycisk, program generuje mi kolejny punkt funkcji (dowolnej) i dodaje go do wykresu.
    Niestety, jedyne co znalazłem w helpie, to robienie od razu całego wykresu, np z tablicy.
    Chcę to zrobić w Visual Basicu, czyli znacznie prostszym "języku" od Delphi.
  • Poziom 27  
    Witam...
    Nie wiem czy delphi 7 ma komponent do wykresow (zalezy jeszcze od wersji) ale najwygodniej by bylo posluzyc sie wlasnie takim komponentem(Builder 6 taki ma). Poszukaj na www.4programmers.net. Jesli nie znajdziesz to mozesz rysowac po Form poprzez Canvas (Form1->Canvas...) Inne komponenty tez maja wlasciwosc canvas jednak nie wszystkie.
    Bedziesz musial przy uzyciu canvas posluzyc sie najprawdopodobnej:
    Canvas->Pen->Width=1;
    Canvas->Pen->Color=clGreen (lub inny)
    Poczytaj w helpie TCanvas masz tam wyszczegolnione wszystkie opcje.
    Pozdrawiam
  • Poziom 16  
    torry.net sciagnij sobie jakis gotowy komponent do tego, albo mecz sie canvasem.
  • Poziom 24  
    Heja!
    Przykładowy wykres na canvasie, bez komponentu (kopia z sieci):
    Code:

    const
    A = 100; {Amplituda}
    L = 150; {Długosc}
    G = 1.0; {Gęstość. Im większa liczba tym mniejsza gęstość}
    var
    i: Integer;
    begin
    {Jeżeli nie zależy nam na dokładności i szybkości, to możemy rysować punkt po punkcie}
    for i := 0 to L do
    Canvas.Pixels[i, 100+Trunc(A*sin(2*G*i/L*Pi))] := clRed;

    {Jeżeli chcemy mieć dosyć dokładną ciągła sinusoidę to możemy użyć PolyBezier}
    Canvas.PolyBezier([Point(0,100), Point(L*7 div 15,Trunc(100+3.4*A)), Point(L*8 div 15,Trunc(100-3.4*A)), Point(L,100)]);

    {Największe jednak możliwości daje nam LineTo. Możemy dostosować gęstość, czyli liczbę punktów pośrednich, a co za tym idzie szybkość i dokładność krzywej}
    Canvas.MoveTo(0, 100);
    for i := 0 to L do
    Canvas.LineTo(i, 100+Trunc(A*sin(2*G*i/L*Pi)));
    end;

    Pozdrawiam,
    Kuba
  • Poziom 17  
    Witam. Ja z kolei chciałem zrobić wykres w Delphi przedstawiający 20 ostatnich wartości. Wartości te wyświetlane są w funkcji czasu co 1s. Używam do tego komponentu Tchart. Mamproblem z osią X. Nie wiem jak zrobić żeby poprawnie wyświetlało na niej sekundy.
    Ustawiłem tak:
    Code:

    Chart1.BottomAxis.maximum:=asec;
    Chart1.BottomAxis.minimum:=asec-20;

    Wykres idzie z prawej do lewej, problem w tym że pokazują mi się wartości ujemne (co jest oczywiste). Gdy natomiast oblicze sekundy poprawnie, wyrzuca błąd że wartośc max jest mniejsza od min. Jak zabrać się do tego wykresu? Da się wogóle zrobić wykres o ruchomej osi x, na której będzie ostatnie np. 20sekund?