/// <summary> /// 一時的ポイント移動を反映しエッジ描画更新。 /// </summary> public void RedrawEdge(PointInf removedPoint, PointInf addedPoint) { foreach (var e in mEdgeList) { PointInf p1 = null; if (e.fromPointIdx == removedPoint.Idx) { p1 = addedPoint; } else { p1 = mPP.FindPointByIdx(e.fromPointIdx, PointProc.FindPointMode.FindAll); } PointInf p2 = null; if (e.toPointIdx == removedPoint.Idx) { p2 = addedPoint; } else { p2 = mPP.FindPointByIdx(e.toPointIdx, PointProc.FindPointMode.FindAll); } mDP.mCanvas.Children.Remove(e.line); e.line = null; mDP.mCanvas.Children.Remove(e.arrow); e.arrow = null; var l = DrawUtil.NewLine(p1.xy, p2.xy, mDP.mBrush); e.line = l; var poly = NewArrowPoly(p1.xy, p2.xy, mDP.mBrush); e.arrow = poly; mDP.mCanvas.Children.Add(l); mDP.mCanvas.Children.Add(poly); } }
/// <summary> /// すべてのエッジを再描画する。 /// �@既存エッジをキャンバスから削除。 /// �A新しいエッジを作成。 /// �B新エッジをキャンバスに追加。 /// </summary> public void RedrawAllEdges() { foreach (var e in mEdgeList) { var p1 = mPP.FindPointByIdx(e.fromPointIdx, PointProc.FindPointMode.FindAll); var p2 = mPP.FindPointByIdx(e.toPointIdx, PointProc.FindPointMode.FindAll); mDP.mCanvas.Children.Remove(e.line); e.line = null; mDP.mCanvas.Children.Remove(e.arrow); e.arrow = null; var l = DrawUtil.NewLine(p1.xy, p2.xy, mDP.mBrush); e.line = l; var poly = NewArrowPoly(p1.xy, p2.xy, mDP.mBrush); e.arrow = poly; mDP.mCanvas.Children.Add(l); mDP.mCanvas.Children.Add(poly); } }
private void RedrawGrid() { foreach (var p in mGridLines) { mCanvas.Children.Remove(p); } mGridLines.Clear(); for (int x = 0; x < mCanvas.ActualWidth; x += mDP.mGridSz) { var p = DrawUtil.NewLine(new WWVectorD2(x, 0), new WWVectorD2(x, mCanvas.ActualHeight), mDP.mGridBrush); Canvas.SetZIndex(p, mDP.Z_Grid); mCanvas.Children.Add(p); mGridLines.Add(p); } for (int y = 0; y < mCanvas.ActualHeight; y += mDP.mGridSz) { var p = DrawUtil.NewLine(new WWVectorD2(0, y), new WWVectorD2(mCanvas.ActualWidth, y), mDP.mGridBrush); Canvas.SetZIndex(p, mDP.Z_Grid); mCanvas.Children.Add(p); mGridLines.Add(p); } }