Koordinaten aller Punkte einer gemalten Linie speichern und ausgeben
-
Hallo,
ich habe ein Zeichenprogramm geschrieben, welches auch schon relativ gut funktioniert. Jetzt würde ich gerne, wenn ich eine Linie ziehe die Koordinaten aller Punkte, welche sich auf dieser Linie befinden speichern und dann natürlich auch wiederverwenden.
Meine Funktion onmousemove schaut so aus:void CIBOV02Dlg::OnMouseMove(UINT nFlags, CPoint point, T3DPoint* Points[1000]) { if (m_bOnLeftMouseButton && (IsOnInput(point.x, point.y))) { CClientDC dc(this); dc.SetPixel(point.x, point.y, RGB(0,0,0)); dc.MoveTo(m_iStartX, m_iStartY); dc.LineTo(point.x, point.y); m_iStartX = point.x; m_iStartY = point.y; Points[lp]->x = point.x; Points[lp]->y = point.y; } ...Ich müsste doch in diese Funktion einen Zähler intergrieren können, welcher bei jeder Veränderung der Mausposition diese speichert (Array?)und eine Laufvariable um 1 erhöht bis ich wieder den Mausknopf loslasse...
:schland:
-
Suchst du CArray? CList? Schau mal in der MSDN, das sind dynamische Arrays die ihre Grösse automatisch anpassen.
übrigens, wieso verwendest du in deinem Code ein SetPixel, wenn du danach sowieso ein LineTo zu diesem Punkt machst?
Und dein Code ist auf einer Scrollview gar nicht zu empfehlen, da er mit device Koordinaten funktioniert und nicht mit logischen.
Ach was soll ich setz gleich nen Code dazu:// ...View.h class C...View : public CView { // ... CArray<CPoint, CPoint> m_PointArray; // ... }// ...View.cpp void CIBOV02Dlg::OnMouseMove(UINT nFlags, CPoint point, T3DPoint* Points[1000]) { if(m_bOnLeftMouseButton && (IsOnInput(point.x, point.y))) { CClientDC dc(this); OnPrepareDC(&dc); // dc preparieren dc.DPtoLP(&point); // point in logische Koordinaten verwandeln CPoint pt = CPoint(0, 0); // Irgend ein Standard Startpunkt, wenn es noch keinen Punkt im Array hat. // Letzten Punkt im Array holen, wenn was drin ist. if(m_PointArray.GetCount() > 0) { pt = m_PointArray.GetAt(m_PointArray.GetUpperBound()); } dc.MoveTo(pt); dc.LineTo(point); m_PointArray.Add(point); // Punkt dazufügen. } }Grüssli