Сегодня в рассылке VB Helper Newsletter (http://www.vb-helper.com/) прочитал, как автор рассылки создавал специальные картинки для иллюстрации к своим книгам или статьям. Картинки представляют собой маленькие кружочки с цифрами внути. Подобные картинки обычно размещают для показа последоватьельности действий. Например, установите текст в текстовом поле (рис.1), нажмите на кнопку Далее (рис.2) и тому подобное. Безусловно, подобные вещи можно сделать в фотошопе и другом графическом редакторе. Но программисты не ищут легких путей. Гораздо интереснее самому генерировать картинки. Хотя, если серьезно, пример обладает определенным потенциалом для изучения техники работы с графикой, а также может послужить отправной точкой для создания других интересных вещей, например, генерирование лотерейных шаров с номерами.
Пример я портировал с Visual Basic на C#. Желающие ознакомиться с исходниками на VB, могут скачать пример с http://www.vb-helper.com/HowTo/howto_2005_make_number_icons.zip.
Привожу пример на C#. Одно маленькое замечание: в первоисточнике использовался цикл for для генерации десяти кружочков с цифрами от 0 до 9. Я ограничился одной цифрой 1.
const int WID = 24;
string base_path = @"e:\down\"; // ваш путь к папке
Font the_font = new Font("Arial", 10, FontStyle.Bold);
Bitmap bm = new Bitmap(WID,WID);
Graphics gr = Graphics.FromImage(bm);
gr.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
gr.Clear(Color.White);
Rectangle layout_rectangle = new Rectangle(0, 0, WID - 1, WID - 1);
using (LinearGradientBrush br = new LinearGradientBrush(layout_rectangle,
Color.White,Color.Blue,
LinearGradientMode.ForwardDiagonal))
{
gr.FillEllipse(br,layout_rectangle);
gr.DrawEllipse(Pens.Blue, layout_rectangle);
}
StringFormat string_format = new StringFormat();
string_format.LineAlignment = StringAlignment.Center;
string_format.Alignment = StringAlignment.Center;
gr.DrawString("1",the_font,Brushes.White,layout_rectangle,string_format);
bm.Save(base_path + "1" + ".bmp",System.Drawing.Imaging.ImageFormat.Bmp);
MessageBox.Show("Готово");
Кстати, сегодня День святого Валентина. Поздавляю всех романтичных котиков и кошечек )))
Комментариев нет:
Отправить комментарий