parabel zeichen



  • Hi 🙂
    Also ich versuche mit der Paintbox eine Parabel zu zeichnen
    soweit bin ich bisher gekommen

    void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
    {
    //Variablen
    float i;
    int pos=0;
    
    TPaintBox *pb = (TPaintBox *)Sender;
    TCanvas *canv = pb->Canvas;
    
    //Hintergrund
    canv->Brush->Color = clBackground;
    canv->FillRect(pb->ClientRect);
    
    // Farbfestlegung
    canv->Pen->Color = clBlack;
    
    for(i=0; i<250; i++)
    {
    //x^2
    canv->MoveTo(250+i, 250-pos);
    canv->LineTo(250+(i+1), 250-((pow((i+1)/20, 2))*20));
    
    //position festhalten
    pos = (pow((i+1)/20, 2))*20;
    }
    

    funktioniert zwar, sieht aber ein wenig seltsam aus. Und die Schleife über 250 pixel ist irgendwie auch nicht der burner(unflexibel).
    gibts da vielleicht irgendeine andere Möglichkeit



  • TCanvas::Poly... !?



  • frosty,

    frosty schrieb:

    //x^2
    canv->MoveTo(250+i, 250-pos);
    canv->LineTo(250+(i+1), 250-((pow((i+1)/20, 2))*20));
    

    funktioniert zwar, sieht aber ein wenig seltsam aus.

    ich würde float-Werte zwischen -1 und 1 nehmen, quadrieren, auf die Größe der Grafik hoch skalieren (also z.B. mit 250 multipilizieren) und dann Pixel-weise die Parabel zeichnen.



  • danke für die Antworten.. 🙂

    hmmm... pixel-weise hört sich gut an aber ich weiss nicht welche methode ich dafür nehmen soll.

    und eine polybezier-kurve kann man, soweit das stimmt, was ich nachgelesen habe, nur durch vier punkte definieren, das ist irgendwie zu wenig für die Kurven, die ich zeichenn möchte

    ➡ Sorry bin Anfänger 😕
    mfg
    frosty



  • frosty,

    frosty schrieb:

    pixel-weise hört sich gut an aber ich weiss nicht welche methode ich dafür nehmen soll.

    probier's mal mit TCanvas::Pixels (habe ich noch nie benutzt, sieht aber einfach aus). Das steht übrigens auch in der Hilfe (das ist diese F1-Geschichte ...)


Anmelden zum Antworten