public virtual void Paint(Graphics graphics, RoomEditorState state) { if ((_mouseDown) && (_drawMode == AreaDrawMode.Line)) { int penWidth = (int)GetScaleFactor(state); int extraOffset = penWidth / 2; Pen pen = GetPenForArea(_drawingWithArea); pen = new Pen(pen.Color, penWidth); graphics.DrawLine(pen, state.RoomXToWindow(_mouseDownX) + extraOffset, state.RoomYToWindow(_mouseDownY) + extraOffset, state.RoomXToWindow(_currentMouseX) + extraOffset, state.RoomYToWindow(_currentMouseY) + extraOffset); pen.Dispose(); } else if ((_mouseDown) && (_drawMode == AreaDrawMode.Rectangle)) { int mousePressedAtX = state.RoomXToWindow(_mouseDownX); int mousePressedAtY = state.RoomYToWindow(_mouseDownY); int mouseNowAtX = state.RoomXToWindow(_currentMouseX); int mouseNowAtY = state.RoomYToWindow(_currentMouseY); EnsureSmallestNumberIsFirst(ref mousePressedAtX, ref mouseNowAtX); EnsureSmallestNumberIsFirst(ref mousePressedAtY, ref mouseNowAtY); mouseNowAtX += (int)GetScaleFactor(state) - 1; mouseNowAtY += (int)GetScaleFactor(state) - 1; graphics.FillRectangle(GetBrushForArea(_drawingWithArea), mousePressedAtX, mousePressedAtY, mouseNowAtX - mousePressedAtX + 1, mouseNowAtY - mousePressedAtY + 1); } }
/// <summary> /// Draw hint overlay. /// NOTE: this is NOT drawing on actual mask, which is performed when /// user releases mouse button. /// </summary> public virtual void Paint(Graphics graphics, RoomEditorState state) { int roomPixel = state.RoomSizeToWindow(1); int halfRoomPixel = roomPixel / 2; if ((_mouseDown) && (_drawMode == AreaDrawMode.Line)) { int penWidth = (int)(roomPixel * GetHintScaleFactor(state)); Pen pen = GetPenForArea(_drawingWithArea); pen = new Pen(pen.Color, penWidth); graphics.DrawLine(pen, state.RoomXToWindow(_mouseDownX) + halfRoomPixel, state.RoomYToWindow(_mouseDownY) + halfRoomPixel, state.RoomXToWindow(_currentMouseX) + halfRoomPixel, state.RoomYToWindow(_currentMouseY) + halfRoomPixel); pen.Dispose(); } else if ((_mouseDown) && (_drawMode == AreaDrawMode.Rectangle)) { int x1 = state.RoomXToWindow(_mouseDownX); int y1 = state.RoomYToWindow(_mouseDownY); int x2 = state.RoomXToWindow(_currentMouseX); int y2 = state.RoomYToWindow(_currentMouseY); EnsureSmallestNumberIsFirst(ref x1, ref x2); EnsureSmallestNumberIsFirst(ref y1, ref y2); graphics.FillRectangle(GetBrushForArea(_drawingWithArea), x1, y1, x2 - x1 + roomPixel, y2 - y1 + roomPixel); } }
public virtual void Paint(Graphics graphics, RoomEditorState state) { int xPos; int yPos; if (_selectedObject == null) { return; } DesignTimeProperties design = DesignItems[GetItemID(_selectedObject)]; if (!design.Visible) { return; } int width, height; Utilities.GetSizeSpriteWillBeRenderedInGame(_selectedObject.Image, out width, out height); width = state.RoomSizeToWindow(width); height = state.RoomSizeToWindow(height); xPos = state.RoomXToWindow(_selectedObject.StartX); yPos = state.RoomYToWindow(_selectedObject.StartY) - height; Pen pen = new Pen(Color.Goldenrod); pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot; graphics.DrawRectangle(pen, xPos, yPos, width, height); if (_movingObjectWithMouse) { System.Drawing.Font font = new System.Drawing.Font("Arial", 10.0f); string toDraw = String.Format("X:{0}, Y:{1}", _selectedObject.StartX, _selectedObject.StartY); int scaledx = xPos + (width / 2) - ((int)graphics.MeasureString(toDraw, font).Width / 2); int scaledy = yPos - (int)graphics.MeasureString(toDraw, font).Height; if (scaledx < 0) { scaledx = 0; } if (scaledy < 0) { scaledy = 0; } graphics.DrawString(toDraw, font, pen.Brush, (float)scaledx, (float)scaledy); } else if (design.Locked) { pen = new Pen(Color.Goldenrod, 2); xPos = state.RoomXToWindow(_selectedObject.StartX) + (width / 2); yPos = state.RoomYToWindow(_selectedObject.StartY) - (height / 2); Point center = new Point(xPos, yPos); graphics.DrawLine(pen, center.X - 3, center.Y - 3, center.X + 3, center.Y + 3); graphics.DrawLine(pen, center.X - 3, center.Y + 3, center.X + 3, center.Y - 3); } }
public virtual void PaintToHDC(IntPtr hDC, RoomEditorState state) { _objectBaselines.Clear(); foreach (RoomObject obj in _room.Objects) { if (obj.Baseline <= 0) { obj.EffectiveBaseline = obj.StartY; } else { obj.EffectiveBaseline = obj.Baseline; } _objectBaselines.Add(obj); } _objectBaselines.Sort(); foreach (RoomObject obj in _objectBaselines) { if (!DesignItems[GetItemID(obj)].Visible) { continue; } int width, height; Utilities.GetSizeSpriteWillBeRenderedInGame(obj.Image, out width, out height); int ypos = state.RoomYToWindow(obj.StartY - height); Factory.NativeProxy.DrawSpriteToBuffer(obj.Image, state.RoomXToWindow(obj.StartX), ypos, state.Scale); } }
private void DrawCharacter(Character character, RoomEditorState state) { AgsView view = _game.FindViewByID(character.NormalView); if (view != null && view.Loops.Count > 0) { int spriteNum = 0; //this is a check to make certain that loop 0 frame 0 of the character normalview has an image; //if not, it defaults to using spriteNum 0 if (view.Loops[0].Frames.Count > 0) { ViewFrame thisFrame = view.Loops[0].Frames[0]; spriteNum = thisFrame.Image; } int xPos = state.RoomXToWindow(character.StartX); int yPos = state.RoomYToWindow(character.StartY); int spriteWidth, spriteHeight; Utilities.GetSizeSpriteWillBeRenderedInGame(spriteNum, out spriteWidth, out spriteHeight); spriteWidth = state.RoomSizeToWindow(spriteWidth); spriteHeight = state.RoomSizeToWindow(spriteHeight); Factory.NativeProxy.DrawSpriteToBuffer(spriteNum, xPos - spriteWidth / 2, yPos - spriteHeight, state.Scale); } }
public void Paint(Graphics graphics, RoomEditorState state) { if (DesignItems[GetItemID(SelectedEdge.Left)].Visible) { DrawEdge(graphics, state.RoomXToWindow(_room.LeftEdgeX), state.Scale, SelectedEdge.Left); } if (DesignItems[GetItemID(SelectedEdge.Right)].Visible) { DrawEdge(graphics, state.RoomXToWindow(_room.RightEdgeX), state.Scale, SelectedEdge.Right); } if (DesignItems[GetItemID(SelectedEdge.Top)].Visible) { DrawEdge(graphics, state.RoomYToWindow(_room.TopEdgeY), state.Scale, SelectedEdge.Top); } if (DesignItems[GetItemID(SelectedEdge.Bottom)].Visible) { DrawEdge(graphics, state.RoomYToWindow(_room.BottomEdgeY), state.Scale, SelectedEdge.Bottom); } }
private void bufferedPanel1_Paint(object sender, PaintEventArgs e) { _state.UpdateScroll(bufferedPanel1.AutoScrollPosition); int scaleFactor = 1; if ((_room.Resolution == RoomResolution.LowRes) && (Factory.AGSEditor.CurrentGame.IsHighResolution)) { // low-res room in high-res game, scale up since object // co-ordinates will be high-res scaleFactor = 2; } int backgroundNumber = cmbBackgrounds.SelectedIndex; if (backgroundNumber < _room.BackgroundCount) { e.Graphics.SetClip(new Rectangle(0, 0, _state.RoomSizeToWindow(_room.Width), _state.RoomSizeToWindow(_room.Height))); IntPtr hdc = e.Graphics.GetHdc(); Factory.NativeProxy.CreateBuffer(bufferedPanel1.ClientSize.Width + SystemInformation.VerticalScrollBarWidth, bufferedPanel1.ClientSize.Height + SystemInformation.HorizontalScrollBarHeight); // Adjust co-ordinates using original scale factor so that it lines // up with objects, etc int drawOffsX = _state.RoomXToWindow(0); int drawOffsY = _state.RoomYToWindow(0); IRoomEditorFilter maskFilter = GetCurrentMaskFilter(); lock (_room) { Factory.NativeProxy.DrawRoomBackground(hdc, _room, drawOffsX, drawOffsY, backgroundNumber, _state.Scale * scaleFactor, maskFilter == null ? RoomAreaMaskType.None : maskFilter.MaskToDraw, (maskFilter == null || !maskFilter.Enabled) ? 0 : maskFilter.SelectedArea, sldTransparency.Value); } foreach (IRoomEditorFilter layer in _layers) { if (!IsVisible(layer)) { continue; } layer.PaintToHDC(hdc, _state); } Factory.NativeProxy.RenderBufferToHDC(hdc); e.Graphics.ReleaseHdc(hdc); foreach (IRoomEditorFilter layer in _layers) { if (!IsVisible(layer)) { continue; } layer.Paint(e.Graphics, _state); } } base.OnPaint(e); }
public void Paint(Graphics graphics, RoomEditorState state) { float scale = state.Scale; if (DesignItems[GetItemID(SelectedEdge.Left)].Visible) { DrawDoubleWidthVerticalLine(graphics, state.RoomXToWindow(_room.LeftEdgeX), scale); } if (DesignItems[GetItemID(SelectedEdge.Right)].Visible) { DrawDoubleWidthVerticalLine(graphics, state.RoomXToWindow(_room.RightEdgeX), scale); } if (DesignItems[GetItemID(SelectedEdge.Top)].Visible) { DrawDoubleHeightHorizontalLine(graphics, state.RoomYToWindow(_room.TopEdgeY), scale); } if (DesignItems[GetItemID(SelectedEdge.Bottom)].Visible) { DrawDoubleHeightHorizontalLine(graphics, state.RoomYToWindow(_room.BottomEdgeY), scale); } }
public override void Paint(Graphics graphics, RoomEditorState state) { base.Paint(graphics, state); foreach (RoomHotspot hotspot in _room.Hotspots) { if ((hotspot.WalkToPoint.X > 0) && (hotspot.WalkToPoint.Y > 0)) { int x = state.RoomXToWindow(hotspot.WalkToPoint.X); int y = state.RoomYToWindow(hotspot.WalkToPoint.Y); graphics.DrawLine(Pens.Red, x - 4, y - 4, x + 4, y + 4); graphics.DrawLine(Pens.RosyBrown, x - 4, y + 4, x + 4, y - 4); graphics.DrawString(hotspot.ID.ToString(), new System.Drawing.Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold), Brushes.Gold, x + 4, y - 7); } } }
private void bufferedPanel1_Paint(object sender, PaintEventArgs e) { _state.UpdateScroll(bufferedPanel1.AutoScrollPosition); int scaleFactor = 1; int backgroundNumber = cmbBackgrounds.SelectedIndex; if (backgroundNumber < _room.BackgroundCount) { int bufWidth = _state.RoomSizeToWindow(_room.Width); int bufHeight = _state.RoomSizeToWindow(_room.Height); e.Graphics.SetClip(new Rectangle(0, 0, bufWidth, bufHeight)); IntPtr hdc = e.Graphics.GetHdc(); Factory.NativeProxy.CreateBuffer(bufWidth, bufHeight); // Adjust co-ordinates using original scale factor so that it lines // up with objects, etc int drawOffsX = _state.RoomXToWindow(0); int drawOffsY = _state.RoomYToWindow(0); IRoomEditorFilter maskFilter = GetCurrentMaskFilter(); lock (_room) { Factory.NativeProxy.DrawRoomBackground(hdc, _room, drawOffsX, drawOffsY, backgroundNumber, _state.Scale * scaleFactor, maskFilter == null ? RoomAreaMaskType.None : maskFilter.MaskToDraw, maskFilter == null ? 0 : maskFilter.SelectedArea, sldTransparency.Value); } foreach (IRoomEditorFilter layer in _layers) { if (!IsVisible(layer)) { continue; } layer.PaintToHDC(hdc, _state); } Factory.NativeProxy.RenderBufferToHDC(hdc); e.Graphics.ReleaseHdc(hdc); foreach (IRoomEditorFilter layer in _layers) { if (!IsVisible(layer)) { continue; } layer.Paint(e.Graphics, _state); } } base.OnPaint(e); }
private Rectangle GetCharacterRect(Character character, RoomEditorState state) { AgsView view = _game.FindViewByID(character.NormalView); int xPos = state.RoomXToWindow(character.StartX); int yPos = state.RoomYToWindow(character.StartY); if (view == null || view.Loops.Count == 0) { return(new Rectangle(xPos - 5, yPos - 5, 10, 10)); } int spriteNum = 0; if (view.Loops[0].Frames.Count > 0) { spriteNum = _game.FindViewByID(character.NormalView).Loops[0].Frames[0].Image; } int spriteWidth = state.RoomSizeToWindow(GetSpriteWidthForGameResolution(spriteNum)); int spriteHeight = state.RoomSizeToWindow(GetSpriteHeightForGameResolution(spriteNum)); return(new Rectangle(xPos - spriteWidth / 2, yPos - spriteHeight, spriteWidth, spriteHeight)); }
private int GetCurrentAreaBaselineScreenY(RoomEditorState state) { return(state.RoomYToWindow(_room.WalkBehinds[SelectedArea].Baseline)); }