Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Trackbar - specifický zádrhel v c#

Znovu dnes zdravím všechny zúčastněné programátory.

Myslíte že může fungovat toto:

 private void trackBarCervena_Scroll(object sender, EventArgs e)
        {
            if (zmenaPozadi.Checked)
            {
                this.BackColor = Color.FromArgb(trackBarCervena.Value, trackBarModra.Value, trackBarZelena.Value);
                lb_Pozadi_Cervena.Text = trackBarCervena.Value.ToString();
            }
            else if (zmenaStitku.Checked)
            {
                label1.BackColor = Color.FromArgb(trackBarCervena.Value, trackBarModra.Value, trackBarZelena.Value);
                //label1.Text = Color.FromArgb(cervena, modra, zelena);
                label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZelena.Value);
                lb_PozadiStitek_Cervena.Text = trackBarCervena.Value.ToString();
                lb_TextStitek_Cervena.Text = 255 - trackBarCervena.Value.ToString();
                //lb_TextStitek_Cervena.Text=cervena.ToString();
            }
            else
            { }
         }

Jde o to že potřebuji aby se mi v labelu ukazovala hodnota barvy textu,která je převrácená k hodnotě barvy pozadí, proto to 255 - hodnota barvy na trackbaru.

Hodí mi to vždy tuto úžasnou chybu:

Operator '-' cannot be applied to operands of type 'int' and 'string'

Jinými slovy se tomu nelíbí, že 255 je string a trackbarXXX.value je integer. Zkoušel jsem tam dát int rgb=255; a pak dosadit místo 255 >> rgb, ale nepomohlo to.

Pro pochopení: Úloha spočívá ve třech trackbarech, každý pro jednu barvu (red,green,blue) a přitom my si pomocí radiobuttonů vybereme, zda chceme měnit barvu pozadí formuláře anebo barvu textu štítku (labelu) a jeho pozadí - tyto hodnoty jsou k sobě převrácené!
Nevím, zda to někdo chápe, každopádně za každou radu jsem rád.

Předmět Autor Datum
lb_TextStitek_Cervena.Text = (255 - trackBarCervena.Value).ToString();
Wikan 03.10.2010 23:07
Wikan
Čau Wikane, to mi redukovalo moje chyby na polovinu, mělo mě to napadnou hned. Ale co toto: label1.…
odpoved 03.10.2010 23:20
odpoved
label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZ…
Wikan 03.10.2010 23:21
Wikan
Ahoj Wikane, jo to by byl ten samý problém jako minule, akorát v bledě modrém. Tady jde asi o toto:…
Programator-Amater 03.10.2010 23:48
Programator-Amater
Všude tam nemáš doplněné co ti už ukazoval Wikan: .ToString(); label1.Text = Color.FromArgb(255 -…
Flash_Gordon 03.10.2010 23:59
Flash_Gordon
label1.BackColor = Color.FromArgb(trackBarCervena.Value, trackBarModra.Value, trackBarZelena.Value);…
Programator-Amater 04.10.2010 01:36
Programator-Amater
Pokud nechceš měnit text, proč měníš vlastnost Text? label1.ForeColor = Color.FromArgb(255 - trackBa…
Wikan 04.10.2010 09:45
Wikan
Jo to, jsem zjistil teď taky, že jsem blb a a potřebuju měnit barvu text což není Text, ale Forecolo… poslední
Programator-Amater 04.10.2010 11:01
Programator-Amater

Čau Wikane, to mi redukovalo moje chyby na polovinu, mělo mě to napadnou hned.
Ale co toto:

label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZelena.Value);

To se C-Sharpu moc nelíbí

Ahoj Wikane, jo to by byl ten samý problém jako minule, akorát v bledě modrém. Tady jde asi o toto:

 label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZelena.Value);

Píše to tento error:

Error	2	Cannot implicitly convert type 'System.Drawing.Color' to 'string'


Problém je v tomto:

 label1.BackColor = Color.FromArgb(trackBarCervena.Value, trackBarModra.Value, trackBarZelena.Value);
         label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZelena.Value);

To znamená, že Barva pozadí má být přesně opačná než barva textu. Akorát to neakceptuje ty čísla.

label1.BackColor = Color.FromArgb(trackBarCervena.Value, trackBarModra.Value, trackBarZelena.Value);
                label1.Text = Color.FromArgb(255 - trackBarCervena.Value, 255 - trackBarModra.Value, 255 - trackBarZelena.Value);
                lb_PozadiStitek_Modra.Text=trackBarModra.Value.ToString();
                lb_TextStitek_Modra.Text=(255-trackBarModra.Value).ToString();

k prvnímu řádku: trackbar mi upravuje hodnotu pozadi stitku
k druhékmu řádku: trackbar mi má upravovat barvu textu štítku a to formou zbytku (např.: 255-trackBArModra.Value
k třetímu řádku: do labelu pojmnenovaného lb_PozadiStitek_Modra se vypíše v tomto případě jen hodnota pro modrou barvu co se tyče pozadí štítku (tam má smysl trackbar.value.Tostring();)

k čtvrtému řádku: do labelu pojmenovaného lb_TextStitek_Modra se vypíše hodnota zbytková k barvě pozadí (255-barva pozadí) pro barvu textu štítku, zase jen pro modrou.

Tuto šílenost mám definovanou třikrát v trackbar_scroll spolu ještě s podmínkou if (viz. první interpretace kódu v tomto fóru.)
Není to k ničemu dobré, máme se na tom naučit, jak se to dělá a to já právě nevím.
Nechci proto aby se mi to v druhém řádku kódu přepisovalo na string, ale aby to měnilo hodnotu barvy textu ve štítku přes rgb pomocí trackbaru.
Technicky to mám být proveditelné, nevím zda jdu na to dobře, kakarádům to funguje a mě jako obvykle zase ne. Děkuji Vám oboum zúčastněným.

Jo to, jsem zjistil teď taky, že jsem blb a a potřebuju měnit barvu text což není Text, ale Forecolor.
No opravil mě kámoš a ty mě v mé chybě jen utvrzuješ.
Proto toto förum považuji za uzavřené.
Díky Wikane.

Zpět do poradny Odpovědět na původní otázku Nahoru