При изучении языка C# на раннем этапе возникает сложность в практических упражнениях. Ну никак не могу придумать, чего бы такого написать или автоматизировать кодом! В один из таких моментов пришла мысль: «Даешь генератор инвайтов!» Первым делом пошел спросить у гугла. Оказалось, все уже украдено до нас, кто-то когда-то реализовал что-то подобное на PHP. Но воспользоваться чужим решением (тем более на пыхе) — не наш метод. И я с головой ушел в генерацию картинки инвайта…
Напомню (вдруг кто-то забыл) — инвайт представляет собой «картинку в духе суперматизма». Короче говоря — четыре квадрата разных цветов в изображении размером около 50х50 (признаюсь честно — точно не помню). Итак, для генерации чего-нибудь подобного я создал класс с оригинальным названием:
Все, что делает этот класс — это создает экземпляр класса Bitmap, делает на нем 4 кляксы квадратной формы и сохраняет в файл. Особенно оригинально выглядит генерация рандомного цвета.
Весь проект выглядит следующим образом:
Проверено на 1000 экземплярах — работает.
Вот и все.
Напомню (вдруг кто-то забыл) — инвайт представляет собой «картинку в духе суперматизма». Короче говоря — четыре квадрата разных цветов в изображении размером около 50х50 (признаюсь честно — точно не помню). Итак, для генерации чего-нибудь подобного я создал класс с оригинальным названием:
class Invite
{
Random randomGen = new Random();
public void Inviter(String filename)
{
Bitmap bmp = new Bitmap(50, 50);
Graphics gr = Graphics.FromImage(bmp);
gr.FillRectangle(CreateRandomBrush(), new Rectangle(0, 0, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(0, 25, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(25, 25, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(25, 0, 25, 25));
bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
}
private SolidBrush CreateRandomBrush()
{
SolidBrush bBrush = new SolidBrush(Color.FromArgb(randomGen.Next(255), randomGen.Next(255), randomGen.Next(255)));
return bBrush;
}
}
Все, что делает этот класс — это создает экземпляр класса Bitmap, делает на нем 4 кляксы квадратной формы и сохраняет в файл. Особенно оригинально выглядит генерация рандомного цвета.
Весь проект выглядит следующим образом:
Код
using System;
using System.Drawing;
class _Main
{
public static void Main()
{
Console.WriteLine("Сколько Вы хотите генерировать изображений?");
int n = Convert.ToInt32(Console.ReadLine());
Invite invite = new Invite();
for (int index = 0; index < n; index++)
{
String name = Convert.ToString(index + 1)+".jpg";
invite.Inviter(name);
}
}
}
class Invite
{
Random randomGen = new Random();
public void Inviter(String filename)
{
Bitmap bmp = new Bitmap(50, 50);
Graphics gr = Graphics.FromImage(bmp);
gr.FillRectangle(CreateRandomBrush(), new Rectangle(0, 0, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(0, 25, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(25, 25, 25, 25));
gr.FillRectangle(CreateRandomBrush(), new Rectangle(25, 0, 25, 25));
bmp.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
}
private SolidBrush CreateRandomBrush()
{
SolidBrush bBrush = new SolidBrush(Color.FromArgb(randomGen.Next(255), randomGen.Next(255), randomGen.Next(255)));
return bBrush;
}
}
Проверено на 1000 экземплярах — работает.
Вот и все.