예제 #1
0
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            var graphicsObj = e.Graphics;

            var panelRect = new Rectangle(new Point(0, 0), panel1.Size);

            myMap.Draw(imageBasePos, ZoomScale, graphicsObj, panelRect);

            var highlightedNode       = FindClickedNode(myMousePos);
            var highlightedConnection = highlightedNode == null?FindClickedConnection(myMousePos) : null;

            var renderOptions = new NodeRenderOptions();

            renderOptions.BasePos               = imageBasePos;
            renderOptions.Zoom                  = ZoomScale;
            renderOptions.carriedPos            = myNodeCarriedPos;
            renderOptions.carriedNodeId         = carriedNode?.id ?? Guid.Empty;
            renderOptions.selectedNodeId        = selectedNode?.id ?? Guid.Empty;
            renderOptions.highlightedNodeId     = highlightedNode?.id ?? Guid.Empty;
            renderOptions.selectedConnection    = selectedConnection;
            renderOptions.highlightedConnection = highlightedConnection;
            renderOptions.panelSize             = panel1.Size;

            myNodeRenderer.RenderNodes(myNodeCollection.myNodes, graphicsObj, renderOptions);

            //Draw cursor
            if (myPointerState == PointerState.PlaceBlank)
            {
                myNodeRenderer.DrawCursorNode(myMousePos, NodeType.Blank, graphicsObj);
            }
            else if (myPointerState == PointerState.PlaceLock)
            {
                myNodeRenderer.DrawCursorNode(myMousePos, NodeType.Lock, graphicsObj);
            }
            else if (myPointerState == PointerState.PlaceRandom)
            {
                myNodeRenderer.DrawCursorNode(myMousePos, NodeType.RandomKey, graphicsObj);
            }
            else if (myPointerState == PointerState.PlaceEvent)
            {
                myNodeRenderer.DrawCursorNode(myMousePos, NodeType.EventKey, graphicsObj);
            }
            else if (myPointerState == PointerState.OneWay && selectedNode != null)
            {
                myNodeRenderer.DrawCursorOneWayConnection(selectedNode, myMousePos, graphicsObj);
            }
            else if (myPointerState == PointerState.TwoWay && selectedNode != null)
            {
                myNodeRenderer.DrawCursorTwoWayConnection(selectedNode, myMousePos, graphicsObj);
            }

            // var mopusepos = (myMousePos / ZoomScale) - imageBasePos;
            // DrawDebugMessage($"{mopusepos.x}, {mopusepos.y}", graphicsObj);
        }