ďťż

Ładny brzuch

Witam, potrzebuje narysować wykres funkcji np. (f(x)=sinx+5) itp. Najlepiej w Visual C++, ale może też być Borland Bulider. Najlepiej jak by był jakiś komponent służący do tego. Na google znalazłem że jest komponent chart czy jakoś tak ale ja go nie mam Builderze :( . Ktoś mi pomorze?




Witam, potrzebuje narysować wykres funkcji np. (f(x)=sinx+5) itp. Najlepiej w Visual C++, ale może też być Borland Bulider. Najlepiej jak by był jakiś komponent służący do tego. Na google znalazłem że jest komponent chart czy jakoś tak ale ja go nie mam Builderze :( . Ktoś mi pomorze?

na pewno nie masz? a sprawdź w zakładce Additional

Edit

Jak już znajdziesz chart to proponuje wrzucić timera na formę i zrobić ładny efekt oscyloskopu, twoja funkcja będzie się ładniej prezentować, no jak na oscyloskopie :). Jak nie będziesz wiedział jak to zrobić daj znać.

Edit2

Skleroza, użyj sobie TPerformanceGraph z zakładki Sample.
Użytkownik mindspoof edytował ten post 13 październik 2007, 14:43
PerformaneGraph jest i znalazłem w necie taki kod do niego:

int a=rand()%max //losowanie liczby z przedziału <0,max)
PerformanceGraph1->DataPoint(clWhite,a);
PerformanceGraph1->Update()

Niestery ten punkt rysuję się na samym końcu, a nie od środka i nie wiem jak to zmienic. Chciałbym wykres funkcji namalować, ale żeby była stała a nie przesuwała sie tak jak w oscyloskopie. Możeśz mi powiedzieć jak to zrobić ?


PerformaneGraph jest i znalazłem w necie taki kod do niego:

int a=rand()%max //losowanie liczby z przedziału <0,max)
PerformanceGraph1->DataPoint(clWhite,a);
PerformanceGraph1->Update()

Niestery ten punkt rysuję się na samym końcu, a nie od środka i nie wiem jak to zmienic. Chciałbym wykres funkcji namalować, ale żeby była stała a nie przesuwała sie tak jak w oscyloskopie. Możeśz mi powiedzieć jak to zrobić ?


To dziwne że nie masz komponentu Chart, to jest standardowy komponent biblioteki TeeChart, a ona jest w builderze w standardzie, o ile dobrze pamiętam. Ale skoro już znalazłeś PerformanceGraph to możesz za pomocą tego komponentu narysować funkcję. Wrzuć go na formę i dodaj timer. Dla Timera napisz sobie kod:

static int x = 1; x = x +1; double b; b=x; double a; a= sin(b)+5; static int y; y=static_cast<int>(a); PerformanceGraph1->DataPoint(clRed,y); PerformanceGraph1->Update();

Teraz po uruchomieniu programu funkcja zacznie ci się rysować jak w oscyloskopie, jeśli chcesz mieć stałą no to wrzuć sobie buton na formę dzięki któremu będziesz wyłączał timer, czyli zmieniał właściwość Enabled na false. Ustaw sobie interwał Timera na w miarę szybki, zmień siatkę PerformanceGraph i będzie ładnie wyglądało.



Dzięki działa, a da się zrobić tak, żeby wykres był większy i żeby były osie wspóżędnych ?


Dzięki działa, a da się zrobić tak, żeby wykres był większy i żeby były osie wspóżędnych ?

Żeby powiększyć wykres możesz sinus pomnożyć np. przez 10, ale jakość wykresu Ci się spartoli. Jeśli chcesz naprawdę ładną funkcję z podpisanymi osiami itd. to polecałbym ją trzasnąć w komponencie Chart. Jeśli będziesz chciał to pokażę Ci jak to zrobić, ale będę za jakieś 1,5h.

A skąd można ściągnąć ten komponent bo u mnie go nie ma...


A skąd można ściągnąć ten komponent bo u mnie go nie ma...

Chart jest składnikiem biblioteki TeeChart i ją trzeba dodać. Jakiego buildera używasz?

C++ Builder 6.0 Personal


C++ Builder 6.0 Personal

Ja bym Ci radził zaopatrzyć się w wersję pro lub enterprise, tam chart jest, zresztą mają one o wiele więcej komponentów. Personal jest wersją okrojoną.

wersja pro/enterp kosztuja bardzo duzo...


wersja pro/enterp kosztuja bardzo duzo...

Możemy pominąć kwestię ekonomiczną ;) i narysować to w canvasie. Wrzuć sobie na formę PaintBoxa z zakładki system. I dodaj sobie kod:

PaintBox1->Canvas->Pen->Color=clBlack; //to będzie taki pseudo układ współrzędnych PaintBox1->Canvas->MoveTo(20,130); PaintBox1->Canvas->LineTo(380,130); PaintBox1->Canvas->MoveTo(20,30); PaintBox1->Canvas->LineTo(380,30); PaintBox1->Canvas->LineTo(380,230); PaintBox1->Canvas->LineTo(20,230); PaintBox1->Canvas->LineTo(20,30); int i,x,y; //rys sinusa double a,b; double pi= 3.14; i=0; PaintBox1->Canvas->Pen->Width=2; PaintBox1->Canvas->Pen->Color=clYellow; a=(pi*10*i)/180; b=sin(a); y=( 130-100*(b)); x=20+10*i; PaintBox1->Canvas->MoveTo(x,y); for(i=1; i<37;i++) { a=(pi*10*i)/180; b=sin(a); y=( 130-100*(b)); x=20+10*i; PaintBox1->Canvas->LineTo(x,y);

Tu masz sinusa, dodaj twoją 5 to przesuniesz go do góry, więc będziesz musiał powiększyć sobie ten układ współrzędnych bo na tym Ci się nie zmieści.

kompilator ??

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •