Renamed stuff
This commit is contained in:
parent
7beee13609
commit
bd78a130ea
5 changed files with 84 additions and 65 deletions
|
|
@ -30,38 +30,32 @@ namespace LegoArt
|
||||||
|
|
||||||
private void LoadImage(string path)
|
private void LoadImage(string path)
|
||||||
{
|
{
|
||||||
var legoColorService = new LegoColorService();
|
var legoArtColorService = new LegoArtColorService();
|
||||||
|
var legoArtColors = legoArtColorService.ParseImage(path);
|
||||||
var bitmap = new System.Drawing.Bitmap(path);
|
if (legoArtColors != null)
|
||||||
var width = bitmap.Width;
|
|
||||||
var height = bitmap.Height;
|
|
||||||
for (int h = 0; h < height; h++)
|
|
||||||
{
|
{
|
||||||
for (int w = 0; w < width; w++)
|
parentStackPanel.Children.Clear();
|
||||||
|
|
||||||
|
AddLine(System.Drawing.Color.White, "Have", "Needed", "RGB", "#", "Difference", System.Drawing.Color.White);
|
||||||
|
|
||||||
|
var sortedColors = legoArtColors.OrderBy(c => c.LegoNumber).ToList();
|
||||||
|
for (int i = 0; i < sortedColors.Count; i++)
|
||||||
{
|
{
|
||||||
var clr = bitmap.GetPixel(h, w);
|
var color = sortedColors[i].Color;
|
||||||
var legoColorInfo = legoColorService.GetColorInfo(clr);
|
var textRgb = $"{color.R};{color.G};{color.B}";
|
||||||
legoColorInfo.NeedCount++;
|
var difference = sortedColors[i].HaveCount - sortedColors[i].NeedCount;
|
||||||
|
var statusColor = difference < 0 ? System.Drawing.Color.Red : System.Drawing.Color.Green;
|
||||||
|
AddLine(color, sortedColors[i].HaveCount.ToString(), sortedColors[i].NeedCount.ToString(), textRgb, sortedColors[i].LegoNumber.ToString(), difference.ToString(), statusColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var have = legoArtColors.Sum(l => l.HaveCount);
|
||||||
|
var needed = legoArtColors.Sum(l => l.NeedCount);
|
||||||
|
AddLine(System.Drawing.Color.White, have.ToString(), needed.ToString(), "Total:", "", "", System.Drawing.Color.White);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
parentStackPanel.Children.Clear();
|
|
||||||
|
|
||||||
AddLine(System.Drawing.Color.White, "Have", "Needed", "RGB", "#", "Difference", System.Drawing.Color.White);
|
|
||||||
|
|
||||||
var sortedColors = legoColorService.LegoColors.OrderBy(c => c.LegoNumber).ToList();
|
|
||||||
for (int i = 0; i < sortedColors.Count; i++)
|
|
||||||
{
|
{
|
||||||
var color = sortedColors[i].Color;
|
MessageBox.Show("Image includes wrong colors", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||||
var textRgb = $"{color.R};{color.G};{color.B}";
|
|
||||||
var difference = sortedColors[i].HaveCount - sortedColors[i].NeedCount;
|
|
||||||
var statusColor = difference < 0 ? System.Drawing.Color.Red : System.Drawing.Color.Green;
|
|
||||||
AddLine(color, sortedColors[i].HaveCount.ToString(), sortedColors[i].NeedCount.ToString(), textRgb, sortedColors[i].LegoNumber.ToString(), difference.ToString(), statusColor);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var have = legoColorService.LegoColors.Sum(l => l.HaveCount);
|
|
||||||
var needed = legoColorService.LegoColors.Sum(l => l.NeedCount);
|
|
||||||
AddLine(System.Drawing.Color.White, have.ToString(), needed.ToString(), "Total:", "", "", System.Drawing.Color.White);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddLine(System.Drawing.Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, System.Drawing.Color statusColor)
|
private void AddLine(System.Drawing.Color color, string textHave, string textNeed, string textRgb, string textNumber, string textDifference, System.Drawing.Color statusColor)
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,14 @@
|
||||||
|
|
||||||
namespace LegoArtTool
|
namespace LegoArtTool
|
||||||
{
|
{
|
||||||
public class LegoColorInfo
|
public class LegoArtColorInfo
|
||||||
{
|
{
|
||||||
public Color Color { get; private set; }
|
public Color Color { get; private set; }
|
||||||
public int LegoNumber { get; private set; }
|
public int LegoNumber { get; private set; }
|
||||||
public int HaveCount { get; private set; }
|
public int HaveCount { get; private set; }
|
||||||
public int NeedCount { get; set; }
|
public int NeedCount { get; set; }
|
||||||
|
|
||||||
public LegoColorInfo(Color color, int number, int haveCount)
|
public LegoArtColorInfo(Color color, int number, int haveCount)
|
||||||
{
|
{
|
||||||
Color = color;
|
Color = color;
|
||||||
LegoNumber = number;
|
LegoNumber = number;
|
||||||
58
LegoArtTool/LegoArtColorService.cs
Normal file
58
LegoArtTool/LegoArtColorService.cs
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Drawing;
|
||||||
|
|
||||||
|
namespace LegoArtTool
|
||||||
|
{
|
||||||
|
public class LegoArtColorService
|
||||||
|
{
|
||||||
|
public static readonly List<LegoArtColorInfo> LegoColors;
|
||||||
|
|
||||||
|
static LegoArtColorService()
|
||||||
|
{
|
||||||
|
LegoColors = new List<LegoArtColorInfo>();
|
||||||
|
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(0, 0, 0), 1, 698));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(102, 101, 96), 2, 141));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(167, 166, 162), 3, 51));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(246, 246, 248), 4, 149));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(0, 53, 94), 5, 121));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(101, 135, 162), 6, 52));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(121, 196, 236), 7, 57));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(253, 104, 0), 8, 74));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(255, 170, 0), 9, 65));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(229, 205, 135), 10, 283));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(163, 129, 93), 11, 137));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(196, 115, 54), 12, 29));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(206, 81, 0), 13, 85));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(119, 40, 0), 14, 250));
|
||||||
|
LegoColors.Add(new LegoArtColorInfo(Color.FromArgb(66, 23, 3), 15, 554));
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<LegoArtColorInfo> ParseImage(string imagePath)
|
||||||
|
{
|
||||||
|
var parsedLegoColors = new List<LegoArtColorInfo>(LegoColors);
|
||||||
|
|
||||||
|
var bitmap = new Bitmap(imagePath);
|
||||||
|
var width = bitmap.Width;
|
||||||
|
var height = bitmap.Height;
|
||||||
|
for (int h = 0; h < height; h++)
|
||||||
|
{
|
||||||
|
for (int w = 0; w < width; w++)
|
||||||
|
{
|
||||||
|
var clr = bitmap.GetPixel(h, w);
|
||||||
|
var legoColorInfo = parsedLegoColors.SingleOrDefault(l => l.Color == clr);
|
||||||
|
if (legoColorInfo != null)
|
||||||
|
{
|
||||||
|
legoColorInfo.NeedCount++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return parsedLegoColors;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,4 +4,8 @@
|
||||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="System.Drawing.Common" Version="5.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Drawing;
|
|
||||||
|
|
||||||
namespace LegoArtTool
|
|
||||||
{
|
|
||||||
public class LegoColorService
|
|
||||||
{
|
|
||||||
public List<LegoColorInfo> LegoColors { get; private set; }
|
|
||||||
|
|
||||||
public LegoColorService()
|
|
||||||
{
|
|
||||||
LegoColors = new List<LegoColorInfo>();
|
|
||||||
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(0, 0, 0), 1, 698));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(102, 101, 96), 2, 141));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(167, 166, 162), 3, 51));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(246, 246, 248), 4, 149));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(0, 53, 94), 5, 121));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(101, 135, 162), 6, 52));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(121, 196, 236), 7, 57));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(253, 104, 0), 8, 74));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(255, 170, 0), 9, 65));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(229, 205, 135), 10, 283));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(163, 129, 93), 11, 137));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(196, 115, 54), 12, 29));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(206, 81, 0), 13, 85));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(119, 40, 0), 14, 250));
|
|
||||||
LegoColors.Add(new LegoColorInfo(Color.FromArgb(66, 23, 3), 15, 554));
|
|
||||||
}
|
|
||||||
|
|
||||||
public LegoColorInfo GetColorInfo(Color color)
|
|
||||||
{
|
|
||||||
return LegoColors.Single(l => l.Color == color);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue