11.02.2012, 00:40
#1
Старший сержант
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Form Skins
Всем привет!
Решил поэкспериментировать со скинами для формы. Может для кого-то покажется бредом, но я считаю такой способ вполне приемлемым.
Для проекта использовал 6 изображений, 3 из них разрешением 200х120(по размеру моей формы), а 3 других меньше, нужны для фона кнопок.
Начнем...
1. Создаем проект, у меня он называется "Form Skins"
2. Жмем на панели инструментов Проект => Свойства: "Название формы"
[Ссылки могут видеть только зарегистрированные пользователи. ]
3. Жмем Ресурсы => Добавить существующий файл. Добавляем заготовленные картинки
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Переходим к форме.
1. Добавляем на форму 2 button, 1 comboBox, 1 label. Первая кнопка в дальнейшем будет сворачивать нашу форму, поэтому назовем её "Свернуть", вторая кнопка закрывать программу, назовем её "Закрыть", в label я написал скин, поставил рядом с comboBox.
2. На button и на label ForeColor(цвет шрифта) меняем на White(белый)
[
Ссылки могут видеть только зарегистрированные пользователи. ]
3. В свойствах comboBox ставим DropDownStyle = DropDownList
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Переходим к коду программы.
1. Указываем какие строки будет содержать comboBox, а также чему он будет равен пр загрузке программы, так как стиле DropDownList, указать текст по-умолчанию нельзя.
Код:
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { "Skin 1", "Skin 2", "Skin 3" });
comboBox1.Text = "Skin 1";
}
2. Скины у нас будут изменяться по выбору строки в comboBox, щелкаем два раза по comboBox на форме и вставляем вот этот код
Код:
if (comboBox1.Text == "Skin 1")
{
BackgroundImage = Form_Skins.Properties.Resources.скин1;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка1;
}
if (comboBox1.Text == "Skin 2")
{
BackgroundImage = Form_Skins.Properties.Resources.скин2;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка2;
}
if (comboBox1.Text == "Skin 3")
{
BackgroundImage = Form_Skins.Properties.Resources.скин3;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка3;
}
Думаю здесь и так все понятно, поэтому без комментариев.
3. Добавим на наши кнопки коды, чтобы они выполняли функции, соответствующие их названию.
Первая кнопка "Свернуть"
Код:
WindowState = FormWindowState.Minimized;
Вторая кнопка "Закрыть"
Вот что получилось у меня
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Ну вот в принципе и все, готовый проект смотрите во вложениях.
С помощью кода Hermein'а, слепил вроде как оптимальный код. Гайд изменять уже не буду.
А вот код(также есть в коменте ниже)
Код:
namespace Form_Skins
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { "Skin 1", "Skin 2", "Skin 3" });
comboBox1.SelectedIndex = 0;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
skin("скин1", "кнопка1");
break;
case 1:
skin("скин2", "кнопка2");
break;
case 2:
skin("скин3", "кнопка3");
break;
}
}
private void skin(string фон, string кнопка)
{
BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(фон);
button1.BackgroundImage = button2.BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(кнопка);
}
private void button1_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Последний раз редактировалось Gamer1912; 11.02.2012 в 10:54 .
Пользователь сказал cпасибо:
11.02.2012, 01:05
#2
Рыцарь-защитник
Регистрация: 14.01.2011
Сообщений: 633
Популярность: 28087
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 90
Поблагодарили 717 раз(а) в 374 сообщениях
Re: Form Skins
Пользователь сказал cпасибо:
11.02.2012, 01:11
#3
Старший сержант
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Re: Form Skins
Последний раз редактировалось Gamer1912; 11.02.2012 в 01:31 .
Причина: Добавлено сообщение
11.02.2012, 01:46
#4
Старший сержант
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Re: Form Skins
Цитата:
switch(ComboBox1.SelectionIndex)
{
case 0: this.BackgroundImage = Form_Skins.Properties.Resources.скин1;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка1;
break;
case 1: this.BackgroundImage = Form_Skins.Properties.Resources.скин2;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка2;
break;
case 2: this.BackgroundImage = Form_Skins.Properties.Resources.скин3;
button1.BackgroundImage = button2.BackgroundImage = Form_Skins.Properties.Resources.кнопка3;
break;
}
За этот код огромное спасибо!
Вот еще вариант
Код:
namespace Form_Skins
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { "Skin 1", "Skin 2", "Skin 3" });
comboBox1.SelectedIndex = 0;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
skin(Properties.Resources.скин1, Properties.Resources.кнопка1);
break;
case 1:
skin(Properties.Resources.скин2, Properties.Resources.кнопка2);
break;
case 2:
skin(Properties.Resources.скин3, Properties.Resources.кнопка3);
break;
}
}
private void skin(Image фон, Image кнопка)
{
this.BackgroundImage = фон;
button1.BackgroundImage = button2.BackgroundImage = кнопка;
}
private void button1_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Добавлено через 16 минут
Вот наверно самый оптимальный вариант, когда скинов достаточно много.
Код:
namespace Form_Skins
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { "Skin 1", "Skin 2", "Skin 3" });
comboBox1.SelectedIndex = 0;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
skin("скин1", "кнопка1");
break;
case 1:
skin("скин2", "кнопка2");
break;
case 2:
skin("скин3", "кнопка3");
break;
}
}
private void skin(string фон, string кнопка)
{
BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(фон);
button1.BackgroundImage = button2.BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(кнопка);
}
private void button1_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
Последний раз редактировалось Gamer1912; 11.02.2012 в 02:03 .
Причина: Добавлено сообщение
11.02.2012, 10:12
#5
Разведчик
Регистрация: 03.12.2010
Сообщений: 16
Популярность: 917
Сказал(а) спасибо: 22
Поблагодарили 75 раз(а) в 34 сообщениях
Re: Form Skins
Спасибо, мануал в закладки, пригодится в будущем.
Пользователь сказал cпасибо:
11.02.2012, 12:22
#6
Старший сержант
Регистрация: 31.01.2011
Сообщений: 182
Популярность: 887
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 136
Поблагодарили 494 раз(а) в 220 сообщениях
Re: Form Skins
Вот еще дополнение, если кнопок много, то в самый раз
Код:
using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Form_Skins
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox1.Items.AddRange(new object[] { "Skin 1", "Skin 2", "Skin 3" });
comboBox1.SelectedIndex = 0;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case 0:
skin("скин1", "кнопка1", "Cyan");
break;
case 1:
skin("скин2", "кнопка2", "Black");
break;
case 2:
skin("скин3", "кнопка3", "White");
break;
}
}
private void skin(string фон_формы, string фон_кнопки, string цвет_текста)
{
BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(фон_формы);
foreach (var ctrl in Controls)
{
if (ctrl is Button)
((Button)ctrl).BackgroundImage = (Image)Properties.Resources.ResourceManager.GetObject(фон_кнопки);
if (ctrl is Button)
((Button)ctrl).ForeColor = Color.FromName(цвет_текста);
if (ctrl is Button)
((Button)ctrl).Font = new Font(((Button)ctrl).Font, FontStyle.Bold);
}
}
private void button1_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
См. вложение
Пользователь сказал cпасибо:
16.02.2012, 17:54
#7
Сержант
Регистрация: 11.12.2010
Сообщений: 130
Популярность: 1146
Сказал(а) спасибо: 42
Поблагодарили 191 раз(а) в 51 сообщениях
Re: Form Skins
А Ha C# нельзя изменить стиль окна программы? Ну чтоб как на семерке было прозрачно, хотя на компе вообще стоит ХР, со стандартной темой! Это я к примеру!
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Похожие темы
Тема
Автор
Раздел
Ответов
Последнее сообщение
Garena Skins - GoDz
ParniSha)
Garena
11
21.11.2010 13:08
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 06:21 .