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;


// Bitte beachten Sie auch den Fortsetzungsband zu diesem Buch, falls
// Ihnen das Programmieren Spaß gemacht hat und Sie sich fortgeschritteneren 
// Themen zuwenden wollen. Alle Informationen zum Fortsetzungsband finden
// Sie auf der Website: www.tiefer-einsteigen.de 

namespace Farbregler
{
    public partial class ColorForm : Form
    {
        private int redValue = 128, greenValue = 128, blueValue = 128;
        
        public ColorForm()
        {
            InitializeComponent();
            readColorSettings();
        }

        private void trkRed_Scroll(object sender, EventArgs e)
        {
            redValue = trkRed.Value;
            showColor();
        }

        private void trkGreen_Scroll(object sender, EventArgs e)
        {
            greenValue = trkGreen.Value;
            showColor();
        }

        private void trkBlue_Scroll(object sender, EventArgs e)
        {
            blueValue = trkBlue.Value;
            showColor();
        }

        private void showColor()
        {
            // neue Instanz des Datentyps Color erstellen
            Color currentColor = new Color();

            // Farbe festlegen
            currentColor = Color.FromArgb(redValue, greenValue, blueValue);

            // aktuelle Farbe dem Panel-Steuerelement zuweisen
            pnlColorSample.BackColor = currentColor;

            // Farbwert in Hexadezimaleinstellung im Label txtHexValue anzeigen
            txtHexValue.Text = convertRGBToHex();            

        }

        private string convertRGBToHex()
        {
            // die einzelnen Farbwerte in Hex-Strings konvertieren
            string redValueHex = redValue.ToString("X");
            string greenValueHex = greenValue.ToString("X");
            string blueValueHex = blueValue.ToString("X");

            // den String zusammenbauen
            string hexColor = "#"
                // den einzelnen Farbstrings wenn nötig führende Nullen
                // voranstellen
                    + redValueHex.PadLeft(2, '0')
                    + greenValueHex.PadLeft(2, '0')
                    + blueValueHex.PadLeft(2, '0');
            return hexColor;
        }


        private void ColorForm_Load(object sender, EventArgs e)
        {
            trkRed.Value = redValue;
            trkGreen.Value = greenValue;
            trkBlue.Value = blueValue;
            showColor();

        }

        private void readColorSettings()
        {
            redValue = Properties.Settings.Default.red;
            greenValue = Properties.Settings.Default.green;
            blueValue = Properties.Settings.Default.blue;
        }


        private void btnCopy_Click(object sender, EventArgs e)
        {
            Clipboard.SetText(txtHexValue.Text);
        }

        private void ColorForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            saveColorSettings();
        }








        private void saveColorSettings()
        {
          //  throw new NotImplementedException();
        }

    }
}
