Уроки Windows Forms C++/C#
Мем-генератор в MVS C#Перед тем, как начать объяснять строение такой программы, как Мем-Генератор обязательно посмотрите предыдущий урок и этот, если ещё не смотрели их. Создайте приложение в среде "Windows Forms". Перенесите на форму следующие элементы: 6"label", 4"textBox", 4"button" и 1"PictureBox".

Далее измените текст у элементов "label" и "button", как показано на картинке, расположенной ниже, если не знаете, как это сделать – посмотрите этот урок. Label1,2,3,4 - "|"; Label5 – "Верхняя надпись"; Lable6 – "Нижняя надпись"; Button1- "Обзор"; Button1 – "Сохранить"; Bitton3 – "Ввод"; Button4- картинка, обозначающая очистку поля; Символы “|” будут показывать, где нужно писать текст, что бы он располагался по середине строки, а не вначале картинки, это если вы пишите на верху или в низу только одно слово, а если несколько – то можно и из начала "textBox", на примере в конце этого урока вы поймёте, что имеется в виду, если ещё не поняли. После этого у “textbox3” “textBox4” включите режим "Multeline" растяните, как на нижнем рисунке и включите свойство “ScrollBars”->“Vertical” – о том, как это делать вы можете узнать их “предыдущего урока”. Наложите “textBox3”на "textBox1", что бы его небыло видно, так же "textBox4" наложите на "tetxBox2". На кнопку "button4" загрузите это изображение:

если не знаете, как это делать – посмотрите этот урок. Так же измените цвет поля "PictureBox" на белый, как это делать рассматривается в этом же уроке. В свойствах фоомы найдите свойство "FormBorStyle" поставив "Fixed3D" после этого, когда программа загрузиться – размер формы будет нельзя изменить. Вид после изменений:

После того, как всё это сделано зайдите в свойства "textBox3" "textBox4" -> "Font" и поменяйте размер шрифта на “12”, а у "textBox1" и "tetxBox2" то же поставьте какой-нибудь другой размер. Это делается для следующего: текст из “textBox3” и “textBox4” будет копироваться в "textBox1" и "tetxBox2", иначе размер формы будет огромным, так как внутренний шрифт установленный в коде будет равен "42". После того, как вы сделали всё, как написано и написали ниже расположенный код, но у вас всё равно форма огромного размера – не переживайте: измените ещё раз размеры шрифтов у каждого из "textBox"ов. Теперь о том, какого размера должны быть исходные картинки:


Ну а теперь – код программы:
C#
namespace Browser_2_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Bitmap bmp_for_draw; private string full_name_of_image; private void Form1_Load(object sender, EventArgs e) { this.Text = "МемГенератор"; Font = new System.Drawing.Font("Times New Roman", 32, FontStyle.Bold); this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; } private void button1_Click(object sender, EventArgs e) { OpenFileDialog open_dialog = new OpenFileDialog(); open_dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All files (*.*)|*.*"; if (open_dialog.ShowDialog() == DialogResult.OK) { try { full_name_of_image = open_dialog.FileName; bmp_for_draw = new Bitmap(open_dialog.FileName); pictureBox1.Image = bmp_for_draw; pictureBox1.Invalidate(); } catch { DialogResult rezult = MessageBox.Show("Impossible to open selected file", "Warning",MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void button2_Click(object sender, EventArgs e) { if (pictureBox1.Image != null) { string format = full_name_of_image.Substring(full_name_of_image.Length - 4, 4); SaveFileDialog savedialog = new SaveFileDialog(); savedialog.OverwritePrompt = true; // если файл с указанным именем уже существует savedialog.CheckPathExists = true; //если пользователь вводит неверный путь или имя файла savedialog.ShowHelp = true; savedialog.Filter = "Image Files(*.BMP)|*.BMP|Image Files(*.JPG)|*.JPG|Image Files(*.GIF)|*.GIF|Image Files(*.PNG)|*.PNG|All files (*.*)|*.*"; if (savedialog.ShowDialog() == DialogResult.OK) { try { Bitmap MM = new Bitmap(pictureBox1.Image); MM.Save(savedialog.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); } catch { MessageBox.Show("Impossible to save image", "FATAL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } private void button3_Click(object sender, EventArgs e) { textBox1.Text = textBox3.Text; textBox2.Text = textBox4.Text; SaveFileDialog savedialog = new SaveFileDialog(); String Text = String.Format("{0}", textBox1.Text); String Txt = String.Format("{0}", textBox2.Text); Brush Кисть = new SolidBrush(Color.White); Bitmap MM = new Bitmap(pictureBox1.Image); Graphics G = Graphics.FromImage(MM); Graphics Q = G; G.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; G.DrawString(Text, Font, Кисть, 13, 2); Q.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; Q.DrawString(Txt, Font, Кисть, 13, 290); pictureBox1.Image = MM; } private void button4_Click_1(object sender, EventArgs e) { Bitmap BM = new Bitmap(pictureBox1.Image); Graphics C = Graphics.FromImage(BM); //Graphics C = CreateGraphics(); C.Clear(pictureBox1.BackColor); pictureBox1.Image = BM; } } }
Результат:
Следующий урок >>