Grafische Ausgabe einer FFT in einem Dialogfeld



  • Hi

    bin ein Newbie im Bereich der Windowsprogrammierung und muß für ein Projekt ein GUI schreiben in dem ich unteranderem eine FFT grafisch darstellen soll. Kann mir jemand einen Tip geben wie ich da am besten vor gehe und ob es schon irgendwo brauchbare Beispiele mit Gitternetzlinien und sogar Zoom gibt.
    Das ganze sollte aussehen wie eine Art Oszi.
    Hab mich auch schon etwas erkundigt und erfahren das es eine spezielle API gibt mit der man zeichen kann mir wurde jedoch davon abgeraten, da diese ziemlich viel CPU-Zeit in anspruchnimmt und da ich die Grafik ca. alle 200-400msec. updaten sollte sei dies nicht akzeptabel. Es gäbe da noch eine Möglichkeit ein Bitmap zu erzeugen und im genannten Interval neu einzuspielen hab aber leider noch nicht brauchbares im Netz gefunden. Kann mir vielleicht einer von Euch weiterhelfen???
    Dann hätte ich noch eine Sache und zwar wie ist es am Besten nachträglich eine einfach Hilfe in ein dialogfeldbasierendes Projekt aufzunehmen?

    Thanks



  • Hmm, fang mal bei SetPixel(x,y) an...
    Also entweder du bastelst dir eine Diagramm Funktion, oder du suchst mal nach einem OCX Control was das macht.

    Deine Zeitvorgaben sind unkritisch. Ich weiss zwar nicht welcher rechner zum Einsatz kommt, aber ein BitBlt incl. Zeichnen dauert nur wenige Millisekunden.



  • Hallo, ich habe ein ähnliches Problem und mein Diagramm mittels der OnDraw-Methode gezeichnet, sieht dann ungefähr so aus:

    void CDiagramView::OnDraw(CDC* pDC)
    {

    pDC->LineTo(...);
    pDC->MoveTo(...);

    //etc.
    //natürlich für jeden Datenpunkt zeichnen und
    //nach belieben davor CPen, CBrush od. ähnliches
    //auswählen

    }

    Leider weiß ich auch noch nicht wirklich, wie Zoom und ähnliche Funktionen funktionieren.
    Es erscheint mir damit zu kompliziert, ich weiß aber auch nicht, was man statt dessen verwenden könnte.
    Wenn Du was rausfinden konntest, wäre ich Dir sehr dankbar, wenn Du es mich auch wissen lassen könntest.

    Grüße
    Yvonne



  • Ein einfacher Ansatz ist, die Koordinaten bei deiner Move bzw Draw Funktion mit
    einem Zoom Faktor zu multiplizieren. Um zu verhindern das du ausserhalb deines
    Bereichs zeichnest kannst ja mit SelectClipReg den Bereich einschränken.

    Gruss charlie


Anmelden zum Antworten