Malprogramm-Klein



  • Hallo Leute,

    ich habe eine Variable CPoint aPoints[10] und möchte mit dieser einen Lienienzug beim bewegen der Maus darstellen, der insgesamt nur 10 Punkte darstellt(zeichnet).

    Wie kann ich das machen...evtl. for-schleife??

    MFG und Thx



  • Also ich verstehe dein Problem nicht ganz... willst du wissen, wie man die einzelnen Punkte verbindet? Das geht in etwa so:

    for(int i=0;i<10-1;++i)
    {
      CMyDC.MoveTo(aPoints[i].x,aPoints[i].y);
      CMyDC.LineTo(aPoints[i+1].x,aPoints[i+1].y);
    }
    


  • Das hier tuts übrigens auch...

    pDC->Polygon(&aPoints, 10);
    


  • @Mastah
    Polygon zeichnet nur geschlossene Flächen, Du meintest wohl Polyline!



  • Hast ja recht... 😃



  • Hallo,

    danke Phobes und Co...ich meinte genau das mit dem Punte verbinden...werde ich gleich ausprobieren...vielen dank...echt super:-)

    Nice Day



  • Hallo,

    ich nochmals...ich habe eine globale Variable erstellt...CPoint aPoints[10];
    und den Code von Phobes eingefügt, so dass folgendes entsteht.

    void CChildView::OnMouseMove(UINT nFlags, CPoint point)
    {
    if(!nFlags) return;
    CClientDC dc(this);
    for(int i=0;i<10-1;++i)
    {
    dc.MoveTo(aPoints[i].x,aPoints[i].y);
    dc.LineTo(aPoints[i+1].x,aPoints[i+1].y);
    }
    CWnd ::OnMouseMove(nFlags, point);
    }

    Leider sehe ich beim bewegen der Maus keine Punkte....bzw. keine Linie...mit Polyline kann ich nicht arbeiten...muss LineTo() und moveTo sein...woran kann es liegen, dass ich nichts zeichnen kann??

    Danke im Voraus

    MFG



  • if(!nFlags) return;

    Was soll das?

    Und was soll überhaupt das Ganze? Willst du die Punkte verbinden, über die die Maus fährt? Dann benutze den zweiten Parameter von OnMouseMove dafür!



  • Ausserdem ist für ein Malprogramm die Schleife in OnMouseMove unvorteilhaft. Merke dir bei On LButtonDown jeden neuen Punkt in einem Array und stelle diese bei OnDraw dar...


Anmelden zum Antworten