Newtonsoft.Json
System.Net
System.Threading.Tasks
System.Drawing
System.Drawing.Imaging
async Task Main()
{
var r = new Random();
var palette1 = downloadPaletteAsync(r,0xFF000000);
var palette2 = downloadPaletteAsync(r,0xFF000000);
byte[] bytes = CreateGridImage(5,5, 9, 9, 40,(await palette1).ToArray());
FileStream file = new FileStream("C:\\Users\\marco.borgna\\paletteWallpaper_1.jpg", FileMode.Create, FileAccess.Write);
file.Write(bytes,0,bytes.Length);
byte[] bytes2 = CreateGridImage(5,5, 9, 9, 40,(await palette2).ToArray());
FileStream file2 = new FileStream("C:\\Users\\marco.borgna\\paletteWallpaper_2.jpg", FileMode.Create, FileAccess.Write);
file2.Write(bytes2,0,bytes2.Length);
}
async Task> downloadPaletteAsync(Random r,uint alpha){
var url = String.Format( "http://www.colourlovers.com/api/palettes?resultOffset={0}&numResults=1&orderCol=numVote&sortBy=DESC",r.Next(0,200) );
Task xmlString = new WebClient().DownloadStringTaskAsync (url);
var s = (await xmlString);
var x = XDocument.Parse( s,LoadOptions.None);
var palette = x.XPathSelectElement("//palette/colors")
.Elements()
.Select (c =>c.Value )
.Select (c => System.Int32.Parse(c,System.Globalization.NumberStyles.HexNumber))
.Select (c => Color.FromArgb((int)(c|alpha)));
return palette;
}
// Define other methods and classes here
public static byte[] CreateGridImage(
int maxXCells,
int maxYCells,
int cellXPosition,
int cellYPosition,
int boxSize,
Color[] palette
)
{
using (var bmp = new System.Drawing.Bitmap(maxXCells * boxSize+1, maxYCells * boxSize+1))
{
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.White);
Pen pen = new Pen(Color.Black);
pen.Color = palette[0];
pen.Width = boxSize;
//Draw vert lines
for (int i = 0; i <= maxXCells;i++ )
{
pen.Color = palette[i%(palette.Length)];
g.DrawLine(pen, (i * boxSize), 0, i * boxSize, boxSize * maxYCells+1);
}
/* //Draw oriz lines
for (int i = 0; i <= maxYCells; i++)
{
pen.Color = palette[i%(palette.Length)];
g.DrawLine(pen, 0, (i * boxSize), boxSize * maxXCells+1, i * boxSize);
} */
}
var memStream = new MemoryStream();
bmp.Save(memStream, ImageFormat.Png);
return memStream.ToArray();
}
}