Minor clean

Add click to map preview to load that acre
Move map+viewport-reticle bitmap creation to drawing project
export map without reticle as scale=1
This commit is contained in:
Kurt 2020-04-03 12:50:53 -07:00
parent e098f85afc
commit b6e19f079d
3 changed files with 35 additions and 15 deletions

View File

@ -53,5 +53,25 @@ public static Bitmap CreateMap(TerrainManager mgr)
return bmp;
}
public static Image CreateMap(TerrainManager mgr, int scale, int acreIndex = -1)
{
var img = CreateMap(mgr);
var map = ImageUtil.ResizeImage(img, img.Width * scale, img.Height * scale);
if (acreIndex < 0)
return img;
using var gfx = Graphics.FromImage(map);
using var pen = new Pen(Color.Red);
var acre = mgr.Acres[acreIndex];
var x = acre.X * TerrainManager.GridWidth * scale;
var y = acre.Y * TerrainManager.GridHeight * scale;
int w = TerrainManager.GridWidth * scale;
int h = TerrainManager.GridHeight * scale;
gfx.DrawRectangle(pen, x, y, w, h);
return map;
}
}
}

View File

@ -254,6 +254,7 @@ private void InitializeComponent()
this.PB_Map.Size = new System.Drawing.Size(226, 194);
this.PB_Map.TabIndex = 23;
this.PB_Map.TabStop = false;
this.PB_Map.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PB_Map_MouseDown);
//
// CM_Picture
//

View File

@ -34,6 +34,7 @@ public TerrainEditor(MainSave sav)
private int AcreIndex => CB_Acre.SelectedIndex;
private void ChangeAcre(object sender, EventArgs e) => LoadGrid(AcreIndex);
private void ReloadMap() => PB_Map.Image = TerrainSprite.CreateMap(Terrain, 2, AcreIndex);
private void LoadGrid(int index)
{
@ -47,20 +48,6 @@ private void LoadGrid(int index)
ReloadMap();
}
private void ReloadMap()
{
var img = TerrainSprite.CreateMap(Terrain);
var map = ImageUtil.ResizeImage(img, img.Width * 2, img.Height * 2);
using var gfx = Graphics.FromImage(map);
using var pen = new Pen(Color.Red);
var acre = Terrain.Acres[AcreIndex];
gfx.DrawRectangle(pen, acre.X * TerrainManager.GridWidth * 2, acre.Y * TerrainManager.GridHeight * 2, TerrainManager.GridWidth * 2, TerrainManager.GridHeight * 2);
PB_Map.Image = map;
}
private void UpdateArrowVisibility(int index)
{
B_Up.Enabled = index > TerrainManager.AcreWidth;
@ -294,7 +281,7 @@ private void Menu_SavePNG_Click(object sender, EventArgs e)
}
const string name = "map";
var bmp = pb.Image;
var bmp = TerrainSprite.CreateMap(Terrain);
using var sfd = new SaveFileDialog
{
Filter = "png file (*.png)|*.png|All files (*.*)|*.*",
@ -305,5 +292,17 @@ private void Menu_SavePNG_Click(object sender, EventArgs e)
bmp.Save(sfd.FileName, ImageFormat.Png);
}
private void PB_Map_MouseDown(object sender, MouseEventArgs e)
{
var x = e.X / (2 * TerrainManager.GridWidth);
var y = e.Y / (2 * TerrainManager.GridHeight);
var index = (y * TerrainManager.AcreWidth) + x;
var clamp = Math.Max(0, Math.Min((TerrainManager.AcreHeight * TerrainManager.AcreWidth) - 1, index));
if (AcreIndex != clamp)
CB_Acre.SelectedIndex = clamp;
}
}
}