Fixed SpriteSheet display in SpriteMapEditor, no longer offset incorrectly.

This commit is contained in:
quinnvoker
2018-12-05 14:12:23 -08:00
parent 7b8105038e
commit 433fadfe59
3 changed files with 46 additions and 50 deletions
+28 -28
View File
@@ -60,6 +60,7 @@
this.loadMapDialog = new System.Windows.Forms.OpenFileDialog();
this.saveMapDialog = new System.Windows.Forms.SaveFileDialog();
this.spriteViewerPanel = new System.Windows.Forms.Panel();
this.spriteSheetViewer = new SpriteMapEditor.PictureBoxWithInterpolationMode();
this.zoomInButton = new System.Windows.Forms.Button();
this.zoomOutButton = new System.Windows.Forms.Button();
this.zoomLabel = new System.Windows.Forms.Label();
@@ -71,6 +72,7 @@
this.saveProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveProjectAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.importSpriteSheetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.importSpriteMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exportSpriteMapToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -81,8 +83,6 @@
this.viewEditPanel = new System.Windows.Forms.Panel();
this.saveProjectDialog = new System.Windows.Forms.SaveFileDialog();
this.openProjectDialog = new System.Windows.Forms.OpenFileDialog();
this.importSpriteSheetToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.spriteSheetViewer = new SpriteMapEditor.PictureBoxWithInterpolationMode();
this.spriteListEditPanel.SuspendLayout();
this.spriteEditPanel.SuspendLayout();
this.originEditPanel.SuspendLayout();
@@ -93,9 +93,9 @@
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).BeginInit();
this.spriteViewerPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).BeginInit();
this.menuStrip1.SuspendLayout();
this.viewEditPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).BeginInit();
this.SuspendLayout();
//
// spriteList
@@ -456,6 +456,23 @@
this.spriteViewerPanel.TabIndex = 14;
this.spriteViewerPanel.Scroll += new System.Windows.Forms.ScrollEventHandler(this.spriteViewerPanel_Scroll);
//
// spriteSheetViewer
//
this.spriteSheetViewer.BackgroundImage = global::SpriteMapEditor.Properties.Resources.transparentUI;
this.spriteSheetViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.spriteSheetViewer.Location = new System.Drawing.Point(0, 0);
this.spriteSheetViewer.Margin = new System.Windows.Forms.Padding(0);
this.spriteSheetViewer.Name = "spriteSheetViewer";
this.spriteSheetViewer.Size = new System.Drawing.Size(147, 143);
this.spriteSheetViewer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.spriteSheetViewer.TabIndex = 13;
this.spriteSheetViewer.TabStop = false;
this.spriteSheetViewer.Paint += new System.Windows.Forms.PaintEventHandler(this.spriteSheetViewer_Paint);
this.spriteSheetViewer.MouseDown += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseDown);
this.spriteSheetViewer.MouseLeave += new System.EventHandler(this.spriteSheetViewer_MouseLeave);
this.spriteSheetViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseMove);
this.spriteSheetViewer.MouseUp += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseUp);
//
// zoomInButton
//
this.zoomInButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -555,6 +572,13 @@
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(181, 6);
//
// importSpriteSheetToolStripMenuItem
//
this.importSpriteSheetToolStripMenuItem.Name = "importSpriteSheetToolStripMenuItem";
this.importSpriteSheetToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.importSpriteSheetToolStripMenuItem.Text = "Import Sprite Sheet...";
this.importSpriteSheetToolStripMenuItem.Click += new System.EventHandler(this.importSpriteSheetToolStripMenuItem_Click);
//
// importSpriteMapToolStripMenuItem
//
this.importSpriteMapToolStripMenuItem.Enabled = false;
@@ -641,30 +665,6 @@
this.openProjectDialog.Filter = "QUROGames Sprite Map Editor Project|*.smappr";
this.openProjectDialog.Title = "Open Project";
//
// importSpriteSheetToolStripMenuItem
//
this.importSpriteSheetToolStripMenuItem.Name = "importSpriteSheetToolStripMenuItem";
this.importSpriteSheetToolStripMenuItem.Size = new System.Drawing.Size(184, 22);
this.importSpriteSheetToolStripMenuItem.Text = "Import Sprite Sheet...";
this.importSpriteSheetToolStripMenuItem.Click += new System.EventHandler(this.importSpriteSheetToolStripMenuItem_Click);
//
// spriteSheetViewer
//
this.spriteSheetViewer.BackgroundImage = global::SpriteMapEditor.Properties.Resources.transparentUI;
this.spriteSheetViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.spriteSheetViewer.Location = new System.Drawing.Point(0, 0);
this.spriteSheetViewer.Margin = new System.Windows.Forms.Padding(0);
this.spriteSheetViewer.Name = "spriteSheetViewer";
this.spriteSheetViewer.Size = new System.Drawing.Size(147, 143);
this.spriteSheetViewer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.spriteSheetViewer.TabIndex = 13;
this.spriteSheetViewer.TabStop = false;
this.spriteSheetViewer.Paint += new System.Windows.Forms.PaintEventHandler(this.spriteSheetViewer_Paint);
this.spriteSheetViewer.MouseDown += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseDown);
this.spriteSheetViewer.MouseLeave += new System.EventHandler(this.spriteSheetViewer_MouseLeave);
this.spriteSheetViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseMove);
this.spriteSheetViewer.MouseUp += new System.Windows.Forms.MouseEventHandler(this.spriteSheetViewer_MouseUp);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -695,11 +695,11 @@
((System.ComponentModel.ISupportInitialize)(this.spriteYPosBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.spriteXPosBox)).EndInit();
this.spriteViewerPanel.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).EndInit();
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.viewEditPanel.ResumeLayout(false);
this.viewEditPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.spriteSheetViewer)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
+17 -22
View File
@@ -84,17 +84,6 @@ namespace SpriteMapEditor
private List<Microsoft.Xna.Framework.Rectangle> preDragBounds;
private int drawingRectangleOffset
{
get
{
if (zoomLevel > 2)
return (zoomLevel - 1) / 2;
else
return 0;
}
}
public Form1()
{
InitializeComponent();
@@ -298,10 +287,8 @@ namespace SpriteMapEditor
private Rectangle GetDrawingRect(Microsoft.Xna.Framework.Rectangle baseRect, bool outline = true)
{
var drawingRect = new Rectangle(baseRect.X, baseRect.Y, baseRect.Width, baseRect.Height);
drawingRect.X = drawingRect.X * zoomLevel - (zoomLevel - 1);
drawingRect.Y = drawingRect.Y * zoomLevel - (zoomLevel - 1);
drawingRect.X += drawingRectangleOffset;
drawingRect.Y += drawingRectangleOffset;
drawingRect.X = drawingRect.X * zoomLevel + 1;
drawingRect.Y = drawingRect.Y * zoomLevel + 1;
drawingRect.Width *= zoomLevel;
drawingRect.Height *= zoomLevel;
@@ -314,10 +301,8 @@ namespace SpriteMapEditor
private Point GetOriginDrawingPoint(SpriteMapRegion sprite)
{
var drawingPoint = new Point(sprite.Bounds.X, sprite.Bounds.Y);
drawingPoint.X = drawingPoint.X * zoomLevel - (zoomLevel - 1);
drawingPoint.Y = drawingPoint.Y * zoomLevel - (zoomLevel - 1);
drawingPoint.X += drawingRectangleOffset;
drawingPoint.Y += drawingRectangleOffset;
drawingPoint.X = drawingPoint.X * zoomLevel;
drawingPoint.Y = drawingPoint.Y * zoomLevel;
drawingPoint.X += (int)sprite.Origin.X * zoomLevel;
drawingPoint.Y += (int)sprite.Origin.Y * zoomLevel;
return drawingPoint;
@@ -352,11 +337,21 @@ namespace SpriteMapEditor
InitializeMask();
foreach (SpriteMapRegion currentSprite in selectedSprites)
{
for (int currentY = 0; currentY < currentSprite.Bounds.Height; currentY++)
var highlightRect = currentSprite.Bounds;
//make sure highlight mask update doesn't attempt to write to pixels that are out of bounds
var oobX = highlightRect.X + highlightRect.Width - spriteSheet.Width;
var oobY = highlightRect.Y + highlightRect.Height - spriteSheet.Height;
if (oobX > 0)
highlightRect.Width -= oobX;
if (oobY > 0)
highlightRect.Height -= oobY;
for (int currentY = 0; currentY < highlightRect.Height; currentY++)
{
for (int currentX = 0; currentX < currentSprite.Bounds.Width; currentX++)
for (int currentX = 0; currentX < highlightRect.Width; currentX++)
{
highlightMask.SetPixel(currentX + currentSprite.Bounds.X, currentY + currentSprite.Bounds.Y, Color.Transparent);
highlightMask.SetPixel(currentX + highlightRect.X, currentY + highlightRect.Y, Color.Transparent);
}
}
}
@@ -14,6 +14,7 @@ namespace SpriteMapEditor
protected override void OnPaint(PaintEventArgs paintEventArgs)
{
paintEventArgs.Graphics.InterpolationMode = InterpolationMode;
paintEventArgs.Graphics.PixelOffsetMode = PixelOffsetMode.Half;
base.OnPaint(paintEventArgs);
}
}