KBS2.Controls.BlueprintPanel.OnPaint C# (CSharp) 메소드

OnPaint() 보호된 메소드

protected OnPaint ( PaintEventArgs e ) : void
e PaintEventArgs
리턴 void
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            if(this.ActiveBlueprint == null) return;

            List<Corner> cornerExcludes = new List<Corner>();
            List<Wall> wallExcludes = new List<Wall>();

            Graphics g = e.Graphics;
            BlueprintRenderEventArgs centerArgs = new BlueprintRenderEventArgs(g, this._editMode, this._center, null, null);
            this.Renderer.OnRenderCenter(centerArgs);

            foreach(Room room in this.ActiveBlueprint.Rooms) {
                BlueprintRenderEventArgs roomArgs = new BlueprintRenderEventArgs(g, this._editMode, this._center, room, room.GetType());
                if(room == this.SelectedRoom)		this.Renderer.OnRenderRoomSelected(roomArgs);
                else if(room == this._currentRoom)	this.Renderer.OnRenderRoomNew(roomArgs);
                else if(room == this.HoveredRoom)	this.Renderer.OnRenderRoomHover(roomArgs);
                else 								this.Renderer.OnRenderRoom(roomArgs);

                foreach(Corner corner in room.GetCorners()) {
                    if(cornerExcludes.Contains(corner)) continue;
                    cornerExcludes.Add(corner);

                    foreach(Wall wall in corner.GetWalls()) {
                        if(wallExcludes.Contains(wall)) continue;
                        wallExcludes.Add(wall);

                        BlueprintRenderEventArgs wallArgs = new BlueprintRenderEventArgs(g, this._editMode, this._center, wall, wall.GetType());
                        if(wall == this.SelectedWall)		this.Renderer.OnRenderWallSelected(wallArgs);
                        else if(wall == this.HoveredWall)	this.Renderer.OnRenderWallHover(wallArgs);
                        else								this.Renderer.OnRenderWall(wallArgs);
                    }

                    BlueprintRenderEventArgs cornerArgs = new BlueprintRenderEventArgs(g, this._editMode, this._center, corner, corner.GetType());
                    if(corner == this.SelectedCorner)		this.Renderer.OnRenderCornerSelected(cornerArgs);
                    else if(corner == this.HoveredCorner)	this.Renderer.OnRenderCornerHover(cornerArgs);
                    else if((this._currentRoom != null && this._currentRoom.GetCorners().Contains(corner))
                        ||	this.SelectedRoom != null && this.SelectedRoom.GetCorners().Contains(corner))
                                                            this.Renderer.OnRenderCornerHighlighted(cornerArgs);
                    else									this.Renderer.OnRenderCorner(cornerArgs);

                    if(this._snapCorners.Count > 0 && this._movingCorner
                        && (corner == this.SelectedCorner || this._snapCorners.Contains(corner))) {
                        this.Renderer.OnRenderCornerSnap(cornerArgs);
                    }
                }
            }

            g.FillRectangle(Brushes.White, new Rectangle(0, 0, 100, 20));
            g.DrawRectangle(Pens.Black, new Rectangle(0, 0, 100, 20));
            g.DrawString(this.ActiveBlueprint.Name, new Font("Arial", 12, FontStyle.Bold), Brushes.Black, new RectangleF(0, 0, 100, 20));

            if(this._status != Status.None) {
                string hint = string.Empty;

                switch(this._status) {
                    case Status.CreateRoomSelect:
                        hint = HINT_CREATE_ROOM_SELECTCORNER;
                        break;
                    case Status.CreateRoom:
                        hint = HINT_CREATE_ROOM;
                        break;
                    case Status.CreateCorner:
                        hint = HINT_CREATE_CORNER;
                        break;
                    case Status.ConnectCorners:
                        hint = HINT_CONNECT_CORNERS;
                        break;
                    default:
                        break;
                }

                if(hint != string.Empty) {
                    g.DrawString(hint, new Font("Arial", 16, FontStyle.Italic), Brushes.Black, new RectangleF(10, 25, 400, 50));
                }
            }
        }