пятница, 27 сентября 2013 г.

Изображение в качестве кнопки

Все знают cc как добавить кнопки в C# форму, особенно в Visual Studio это очень легко. Но как добавить в форму кнопка изображения. Сегодня будем создать именно такую приложению.
Создаем новый Windows.Forms приложения. Добавим там две PictureBox и даем их размер 40x40.


Откроем свойство приложении и в Resources добавим картинки, которые находятся где то в компьютере.

Картинки программным образом можно получать из Resources таким образом
        Image Check = Resources.check;
        Image Cross = Resources.cross;

Если теперь в конструкторе добавить эти строки
            pictureBox1.Image = Check;
            pictureBox2.Image = Cross;
то при запуске приложении, изображении будут появляться на форму


Когда курсор мыши находится на изображении, мы хотим чтобы вид курсора изменился на рука. Для этого в свойстах двух PictureBox для Cursor выбираем Hand.

Теперь создаем событии для клика, где например должен выводится какое то сообщения
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Check Button is Clicked!");
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Cross Button is Clicked!");
        }

Давайте теперь сделаем немного анимацию. Мы например хотим, чтобы когда курсор мыши находится на PictureBox размер изображении изменился. Для этого для каждого изображении создаем события MouseHover и MouseLeave. То что будет с MouseLeave думаю всем понятно, изображения будет принимать свой прежний размер.
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = Check;
        }

        private void pictureBox2_MouseLeave(object sender, EventArgs e)
        {
            pictureBox2.Image = Cross;
        }

А вот с MouseHover мы должны изменить размер изображении допустим на 20%. Вот две события для изменения размеров изображений
        private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            int Check_Width = Check.Width + ((Check.Width * 20) / 100);
            int Check_Height = Check.Height + ((Check.Height * 20) / 100);

            Bitmap Check_1 = new Bitmap(Check_Width, Check_Height);
            Graphics g = Graphics.FromImage(Check_1);
            g.DrawImage(Check, new Rectangle(Point.Empty, Check_1.Size));
            pictureBox1.Image = Check_1;
        }

        private void pictureBox2_MouseHover(object sender, EventArgs e)
        {
            int Cross_Width = Cross.Width + ((Cross.Width * 20) / 100);
            int Cross_Height = Cross.Height + ((Cross.Height * 20) / 100);

            Bitmap Cross_1 = new Bitmap(Cross_Width, Cross_Height);
            Graphics g = Graphics.FromImage(Cross_1);
            g.DrawImage(Cross, new Rectangle(Point.Empty, Cross_1.Size));
            pictureBox2.Image = Cross_1;
        }

Вот польный код программы
using Image_as_Button.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Image_as_Button
{
    public partial class Form1 : Form
    {
        Image Check = Resources.check;
        Image Cross = Resources.cross;

        public Form1()
        {
            InitializeComponent();
            pictureBox1.Image = Check;
            pictureBox2.Image = Cross;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Check Button is Clicked!");
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Cross Button is Clicked!");
        }

        private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            int Check_Width = Check.Width + ((Check.Width * 20) / 100);
            int Check_Height = Check.Height + ((Check.Height * 20) / 100);

            Bitmap Check_1 = new Bitmap(Check_Width, Check_Height);
            Graphics g = Graphics.FromImage(Check_1);
            g.DrawImage(Check, new Rectangle(Point.Empty, Check_1.Size));
            pictureBox1.Image = Check_1;
        }

        private void pictureBox2_MouseHover(object sender, EventArgs e)
        {
            int Cross_Width = Cross.Width + ((Cross.Width * 20) / 100);
            int Cross_Height = Cross.Height + ((Cross.Height * 20) / 100);

            Bitmap Cross_1 = new Bitmap(Cross_Width, Cross_Height);
            Graphics g = Graphics.FromImage(Cross_1);
            g.DrawImage(Cross, new Rectangle(Point.Empty, Cross_1.Size));
            pictureBox2.Image = Cross_1;
        }

        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = Check;
        }

        private void pictureBox2_MouseLeave(object sender, EventArgs e)
        {
            pictureBox2.Image = Cross;
        }
    }
}


среда, 25 сентября 2013 г.

C# Программное копирование файла

В C# копирование файла программным образом очень легко. Для этого есть метод File.Copy из пространство имен System.IO, который в качестве аргументов принимает путь исходного файла и место где файл должен быть копирован.
Давайте создаем маленькое приложение в котором будет возможность выбрать файл и место где оно будет копироваться и по клику "Copy" файл будет копирован в папку.