Kolor i okno dialogowe koloru

Projektując aplikację w środowisku Visual Studio mamy możliwość zmiany koloru w momencie tworzenia wyglądu formatki jaki i również bezpośrednio w kodzie działającej aplikacji. Można to zrobić na dwa sposoby poprzez okno dialogowe ustawiania koloru ( ColorDialog ) lub poprzez zmienną bazującej na klasie Color.

Cel: Utwórz aplikację przy pomocy której ustawisz kolor tła kontrolki PictureBox przez wybór kolor z okna dialogowego oraz dynamicznie poprzez zmianę składowych koloru

ColorDialog Visual Studio C#

Krok 1. Układ komponentów

Proponowane ułożenie kontrolek przedstawia poniższa ilustracja

ColorDialog Visual Studio C#

W grupie wybranych kontrolek dwie są niewizualne: kontrolka ColorDialog i StatusStrip

kontrolki niewizualne visual studio c#

Krok 2. Ustawiamy parametry kontrolki TrackBar

Ze względu na to, że składowe koloru przezroczystości, czerwieni, zieleni i niebieskiego są opisane jednym bajtem, czyli przyjmują wartości z zakresu od 0 do 255, to taki zakres ustawimy w opcjach każdej kontrolki TrackBar sterującej danymi składowymi

TrackBar visual studio c#

Krok 3. Deklaracja zmiennych

W nagłówku klasy Form deklarujemy zmienne przeznaczone na przechowywanie składowych koloru oraz zmienną przechowująca bieżący kolor

public partial class Form1 : Form
{
int a, r, g, b;//składowe koloru
Color kolor = new Color();

Krok 4. Funkcja uaktualniająca dane

Ze względu na powtarzalność wybranych instrukcji podczas działania programu, napiszemy bezparametrową funkcję realizującą uaktualnienie danych widocznych dla użytkownika programu. Proponowaną postać przedstawia poniższy kod (w ciele funkcji użyte są standardowe nazwy kontrolek)


void Uaktualnij()
{
//zrob nowe ustawienie koloru
kolor = Color.FromArgb(a, r, g, b);
//podmieniaj pozostale
pictureBox1.BackColor = kolor;
trackBar1.Value = a;
groupBox2.Text = "Kanał alfa: " + trackBar1.Value.ToString();
trackBar2.Value = r;
groupBox3.Text = "Składowa czerwona: " + trackBar2.Value.ToString();
trackBar3.Value = g;
groupBox4.Text = "Składowa zielona: " + trackBar3.Value.ToString();
trackBar4.Value = b;
groupBox5.Text = "Składowa niebieska: " + trackBar4.Value.ToString();
toolStripStatusLabel1.Text = "Kanał alfa= " + a.ToString() +
", czerwony= " + r.ToString() +
", zielony= " + g.ToString() +
", niebieski= " + b.ToString();
//uaktualnij podglady
//podmien kolor w malym podgladzie
panel3.BackColor = Color.FromArgb(255, r, 0, 0);
panel4.BackColor = Color.FromArgb(255, 0, g, 0);
panel5.BackColor = Color.FromArgb(255, 0, 0, b);
}

Krok 5. Przypisanie wartości początkowych zadeklarowanych zmiennych

Wykonanie przypisania zrealizujemy w zdarzeniu Load formatki

private void Form1_Load(object sender, EventArgs e)
{
a = 255;//przezroczystosc
r = 128;//kolor czerwony
g = 128;//kolor zielony
b = 128;//kolor niebieski
Uaktualnij();
}

Jeżeli skompilujesz i uruchomisz program, to zauważysz szary kolor wypełnienia kontrolki PictureBox

kolor wypełnienia kontrolki PictureBox

Krok 6. Wywołanie okna dialogowego zmiany koloru

Sposób wywołania okna dialogowego zmiany koloru (ColorDialog) nie różni się od wywołania innych okien dialogowych. Wywołanie zrealizujemy w zdarzeniu Click kontrolki Button


private void Button1_Click(object sender, EventArgs e)
{
DialogResult wynik = colorDialog1.ShowDialog();
if (wynik == DialogResult.OK)
{
kolor = colorDialog1.Color;
a = kolor.A;//kanal alfa
r = kolor.R;//skladowa czerwona
g = kolor.G;//skladowa zielona
b = kolor.B;//skladowa niebieska
Uaktualnij();
};
}

Kod zapewnia przypisanie składowych wybranego koloru w momencie zamknięcia okna dialogowego. Skompiluj i uruchom aplikację

colorDialog1.ShowDialog() visual studio c#

Krok 7. Zmiana przezroczystości aktywnego koloru

Za przezroczystość koloru odpowiedzialny jest kanał alfa w trybie kolorów ARGB. Zmianę przezroczystości w tym rozwiązaniu realizuje kontrolka trackBar1 w zdarzeniu Scroll. Przykładowy kod zapisany jest poniżej


private void TrackBar1_Scroll(object sender, EventArgs e)
{
//bufor koloru- zapamietaj stary kolor
Color k = panel2.BackColor;
//pokaz wartosc zmiany alfa
groupBox2.Text = "Kanał alfa: "+trackBar1.Value.ToString();
//przypisz nowe alfa
a = trackBar1.Value;
//zrob nowe ustawienie kanalu alfa
k = Color.FromArgb(a, k.R, k.G, k.B);
//podmien kolor
panel2.BackColor = k;
Uaktualnij();
}

Skompiluj program i sprawdź efekty działania

Krok 8. Zmiana składowej czerwieni

Składowa koloru czerwonego zmieniana jest w zdarzeniu Scroll kontrolki trackBar2

private void TrackBar2_Scroll(object sender, EventArgs e)
{
//przypisz nową czerwien
r = trackBar2.Value;
Uaktualnij();
}

Skompiluj program i sprawdź efekt działania

Ćwiczenie sprawdzające: Dopisz odpowiednie zdarzenia pozwalające zmienić pozostałe dwie składowe koloru (zieloną i niebieską)

zdarzenia pozwalające zmienić pozostałe dwie składowe koloru (zieloną i niebieską)
Alkomat- wirtualny test

Alkomat- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
Olinowanie stałe- kalkulator średnic

Olinowanie stałe- darmowa aplikacja na Androida

Pobierz ze sklepu Google Play
przepis na gogfry

Przepis na gofry

zobacz
przepis na bitą śmietanę

Przepis na bitą śmietanę

zobacz