Mini Paint

Mini Paint

Program: Mini Paint zawierający funkcję rysowania linii krzywej lub prostej.

Wersja platformowa: w wyznaczonej przez użytkownika grubości jak i kolorze. Dodatkowo obrazek można zapisać w formacie „.bmp” oraz otworzyć. Występuje również opcja wyczyszczenia ekranu.

Kompilator: Microsoft Visual Studio / Silverlight

Galeria:

Program w akcji.

Kod programu:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Budrewicz_grA_lab1
{
    public partial class Form1 : Form
    {
        Graphics rysunek;
        Color kolorlinii = Color.Black;
        private Pen pióro = new Pen(Color.Black, 2);
        Point punktPocz;
        bool trybRysowania = false;
        bool trybLinii = false; //false - dowolna, true - prosta
        public Form1()
        {
            InitializeComponent();
            poleRysowania.Image = new Bitmap(poleRysowania.Width,poleRysowania.Height);
            rysunek = Graphics.FromImage(poleRysowania.Image);
            pióro.EndCap = System.Drawing.Drawing2D.LineCap.Round;
            pióro.StartCap = System.Drawing.Drawing2D.LineCap.Round;
        }

        private void poleRysowania_MouseDown(object sender, MouseEventArgs e)
        {
            punktPocz = e.Location;
            trybRysowania = true;

        }

        private void poleRysowania_MouseMove(object sender, MouseEventArgs e)
        {
            if (trybRysowania && !trybLinii)
            {
                rysunek.DrawLine(pióro, punktPocz, e.Location);
                poleRysowania.Refresh();
                punktPocz = e.Location;
            }
        }

        private void poleRysowania_MouseUp(object sender, MouseEventArgs e)
        {
            if (trybRysowania && trybLinii)
            {
                rysunek.DrawLine(pióro, punktPocz, e.Location);
                poleRysowania.Refresh();
            }
            
            trybRysowania = false;
        }

        private void poleRysowania_Click(object sender, EventArgs e)
        {

        }

        private void rdbCzarny_CheckedChanged(object sender, EventArgs e)
        {
            pióro.Color = Color.Black;
        }

        private void rdbRed_CheckedChanged(object sender, EventArgs e)
        {
            pióro.Color = Color.Red;
        }

        private void btnZapis_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new SaveFileDialog(); 
                dlg.Filter = "bmp|*.bmp"; 
                dlg.ShowDialog(); 
                if(dlg.FileName != "") 
                    poleRysowania.Image.Save(dlg.FileName);
        }

        private void rdbGreen_CheckedChanged(object sender, EventArgs e)
        {
            pióro.Color = Color.Green;
        }

        private void rdbBlue_CheckedChanged(object sender, EventArgs e)
        {
            pióro.Color = Color.Blue;
        }

        private void btnOdczyt_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "bmp|*.bmp";
            dlg.ShowDialog();
            if (dlg.FileName != "")
            {
                poleRysowania.Image = new Bitmap(dlg.FileName);
                rysunek = Graphics.FromImage(poleRysowania.Image);
            }
        }

        private void tbGrubość_Scroll(object sender, EventArgs e)
        {
            pióro.Width = tbGrubość.Value;
        }

        private void btnCzyść_Click(object sender, EventArgs e)
        {
            rysunek.Clear(Color.White);
            poleRysowania.Refresh();
        }

        private void rdbProsta_CheckedChanged(object sender, EventArgs e)
        {
            trybLinii = true;
        }

        private void rdbDowolna_CheckedChanged(object sender, EventArgs e)
        {
            trybLinii = false;
        }
    }
}