Möchte im VC++ in einer Zeichenfläche in ein Diagramm eine Sinuskurve mit klar definierten Parametern zeichnen, bzw über Variablen zeichnen lassen. Mir ist es bisher nicht gelungen über LineTo,MoveTo zu einem vernünftigen Ergebnis zu kommen. Gibt es eine dc.*-Fkt. die mir dieses macht. Ergebnis soll etwa wie in dem Programm Electronic workbench die Oszilloskopausgabe aussehen.
Moin Es gibt da nichts fertiges. Du musst einfach int (aka Pixel) Werte in die sin einsetzen und das Ergebnis runden. Das ganze multiplizierst du mit einem Faktar - z.B. xscale, yscale. Eine andere Möglichkeit wäre die Annäherung von Taylor - da könntest du den Breiech einschränken - aber imho kein must
mfg PS: Wenn mich nicht alles täsucht, gabs da was auf codeproject. --
Danke, deine Hinweise haben mir zu einem zufriedenstellenden Ergebnis geholfen. Habe noch ein weiteres Problem. Vielleicht kannst du mir ja auch da helfen. Meine Graphikausgabe habe ich komplett in OnDraw ausprogrammiert. Natürlich will ich die berechneten Sinuskurven nicht automatisch beim Programmstart angezeigt bekommen, da ich zu diesem Zeitpunkt noch keine Werte(bzw Startwerte gesetzt habe). Wo muss ich eine Graphikausgabe setzen, die mir auf einen Buttonclick berechnet und gezeichnet werden soll. Habe versucht diesen Code in die Fkt. für den Button zu setzen. Das Ergebnis ist zwar das richtige....allerdings nur den Bruchteil einer Sekunde. Das müsste doch heißen, dass die Stelle erst einmal prinzipiell richtig ist. Übrigens handelt es sich um ein SDI-Projekt mit CFormView.
naja das läuft dann in etwa so(ohne das jetzt zu testen einfach so ins forum gehackt...)
C++:
//Buttonmethode CWnd* wp; CDC *pDC; wp = GetDlgItem(IDC_STATIC_...);//oder wie auch immer das teil heist auf dem du zeichnen willst...halt irgend ein CWndpointer auf die zeichenfläche pDC = wp->GetDC(); for(int i=0;i<anzahl_werte;++i) pDC->setPixel(i,(int)(offset-skalierung*sin(i)),RGB(255,0,0)); wp->ReleaseDC(pDC);