logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak rysować wykresy fal w Borland C++ Builder 6 Personal bez TChart?

bol3k 20 Wrz 2006 23:07 6453 4
REKLAMA
  • #1 3041004
    bol3k
    Poziom 12  
    Posty: 42
    Ocena: 10
    Potrzebuje narysować w czasie trwania programu funkcje odpowiadającą fali: sinusoidalnej, trójkątnej i prostokątnej, powiedzmy od y=0 do y=1, ale najgorsze jest to, że w tym borlandzie nie ma komponentu TChart !!!
    Mam też wersje Enterprise i tam jest komponent TChart, ale nie moge z tej wersji kompilatora korzystać, bo musze mieć legalne źródło.
    Jest może jakiś sposób na przeniesienie tego komponetu do personala ? albo jeszcze lepiej by było wogóle jakimś innym sposobem rysować te funkcje (przebiegi).
    Jak ma ktoś jakiś pomysł to bardzo prosze o odpowiedź.
    Aha i jeszcze dobrze by było żeby widoczne były osie współrzędnych x i y.
  • REKLAMA
  • #2 3041482
    al777
    Poziom 27  
    Posty: 646
    Pomógł: 105
    Ocena: 83
    Pamiętam, że w książce "Od C do C++ Buildera w 48h" (chyba A.Majczaka) był kompletny przykład rysowania wykresów (właśnie sinus) przy użyciu "zwykłego" GDI (czyli Win32 API) - do tego nie potrzeba żadnych komponentów w C++Builderze.

    Mam nadzieję że pomogłem.
  • REKLAMA
  • #3 3041592
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Skorzystaj z wlasciwosci canvas, nie wszystkie komponenty ja posiadaja, z tego co pamietam to TForm, TImage i pewnie kilka innych, wiec po tych komponentach mozesz spokojnie sobie rysowac co chcesz.
    Canvas-em mozesz rysowac dowolne figury, dowolna gruboscia lini i kolorem... i wiele innych rzeczy ;)
    przyklad
    
    Image1->Canvas->Pen->color=clRed;
    

    PS za pomoca LineTo i PenPos mozesz rysowac pixel po pixelu, chyba ze rysujac sinusoide skorzystasz z krzywych ;)
  • REKLAMA
  • #4 3042785
    bol3k
    Poziom 12  
    Posty: 42
    Ocena: 10
    No właśnie wstawiłem komponent TImage i wypełniłem tło i siatke.
    
       Image1->Canvas->Brush->Color=clBlack;
       Image1->Canvas->Pen->Color=clBlack;
       Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
       Image1->Canvas->MoveTo(0,0);
       Image1->Canvas->Pen->Color=clGreen;
       for(int i=0;i<Image1->Width;i+=15)
       {
          Image1->Canvas->MoveTo(i,0);
          Image1->Canvas->LineTo(i,Image1->Height);
       }
       for(int i=0;i<Image1->Height;i+=15)
       {
          Image1->Canvas->MoveTo(0,i);
          Image1->Canvas->LineTo(Image1->Width,i);
       }
    

    Wstawie jeszcze osie współrzędnych, ale niewiem jak mam narysować sinusoide, potem trzeba będzie tą sinusoide zmazać nie naruszając reszty.
    I to jest problem.....
  • #5 3042929
    przemo.t
    Poziom 27  
    Posty: 994
    Pomógł: 79
    Ocena: 30
    Narysowac sinusoide? Ze wzorku rzecz jasna, napewno znajdziez odpowiedni w sieci...
    a zeby ja wymazac to wystarczy albo przerysowac wszystko od poczatku az do momentu rysowania sinusoidy albo rysowac identyczna sinusoide ale w kolorze tla ;)
REKLAMA