๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[C#/WPF] ํŒ์—… ๋ฉ”์„ธ์ง€ ๋„์šฐ๊ธฐ ๋ณธ๋ฌธ

Language/C#

[C#/WPF] ํŒ์—… ๋ฉ”์„ธ์ง€ ๋„์šฐ๊ธฐ

์ฅฌ์Šค์ด 2023. 2. 1. 16:26
728x90

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” WPF ๋‚ด์—์„œ ํŒ์—… ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šฐ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

WPF์—์„œ๋Š” ํŒ์—… ๋ฉ”์„ธ์ง€ ํ˜•์‹์ด MessageBox๋ฐ–์— ์—†์–ด์„œ ์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŒ์—… ๋ฉ”์„ธ์ง€ ๊ธฐ๋Šฅ์ธ ํ† ์ŠคํŠธ(Toast)๋ฅผ TextBlock๊ณผ DoubleAnimation์„ ์ด์šฉํ•˜์—ฌ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ดค์Šต๋‹ˆ๋‹ค.

 

์šฐ์„ , ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ธ์„ ๋•Œ ํŒ์—… ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Button๊ณผ ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šธ TextBlock์„ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

TextBlock ํ…Œ๋‘๋ฆฌ๋ฅผ ํˆฌ๋ช…์œผ๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์œผ๋กœ, ํŒ์—… ๋ฉ”์„ธ์ง€๋ฅผ ๋„์šธ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

private void ToastMessage(string message)
        {
            Color clr = Color.FromRgb(200, 210, 145);
            SolidColorBrush brush = new SolidColorBrush(clr);

            txtblk.Text = message;
            txtblk.Background = brush;

            DoubleAnimation dba1 = new DoubleAnimation();
            dba1.From = 1;
            dba1.To = 1;
            dba1.Duration = new Duration(TimeSpan.FromSeconds(1));

            DoubleAnimation dba2 = new DoubleAnimation();
            dba2.From = 1;
            dba2.To = 0;
            dba2.Duration = new Duration(TimeSpan.FromSeconds(1));
            dba1.Completed += delegate (object sender1, EventArgs e1)
            {
                txtblk.BeginAnimation(OpacityProperty, dba2);
            };
            txtblk.BeginAnimation(OpacityProperty, dba1);
        }

์œ„ ์ฝ”๋“œ ์„ค๋ช…์„ ๊ฐ„๋‹จํžˆ ํ•˜์ž๋ฉด, txtblk๋Š” ์•ž์„œ ์ƒ์„ฑํ•œ TextBlock์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

xaml์—์„œ TextBlock์˜ Background๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด ํŒ์—… ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๊ธฐ ์ „๋ถ€ํ„ฐ ํ™”๋ฉด์— TextBlock์ด ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ Background ๊ฐ’์ด ์„ค์ •๋˜๋„๋ก cs์—์„œ ์„ค์ •ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ, xaml์—์„œ๋Š” ์ƒ‰์ƒ์„ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ง€์ •ํ•ด์คฌ๋‹ค๋ฉด cs์—์„œ๋Š” ์ƒ‰์ƒ๊ฐ’์„ R,G,B๊ฐ’์œผ๋กœ ์ง€์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.  ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํŒ์—…์œผ๋กœ ๋„์šธ ๋ฉ”์„ธ์ง€๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ txtblk์˜ Text์— ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค.

 

์ €๋Š” ์›ํ•˜๋Š” ์ƒ‰์ƒ์˜ RGB๊ฐ’์„ ๊ทธ๋ฆผํŒ์—์„œ ํ™•์ธํ•œ ๋’ค ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ, 2๊ฐœ์˜ DoubleAnimation์„ ๋งŒ๋“ค์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

dba1์ด ๋๋‚œ ๋’ค, dba2๋ฅผ ์‹คํ–‰ํ•˜์—ฌ TextBlock์˜ opacity๊ฐ€ 1์—์„œ 0์œผ๋กœ ๋ณ€ํ•˜์—ฌ ๋ฉ”์„ธ์ง€๊ฐ€ ์„œ์„œํžˆ ์‚ฌ๋ผ์ง€๋„๋ก ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”์„ธ์ง€๊ฐ€ ์„œ์„œํžˆ ๋‚˜ํƒ€๋‚˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด ์œ„ ์ฝ”๋“œ์—์„œ 'dba1.From = 1' ์„ 'dba1.From = 0' ์œผ๋กœ๋งŒ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

(์ด๋•Œ, DoubleAnimation์„ ์‚ฌ์šฉํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ' using System.Media.Animation; ' ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

 

๋งˆ์ง€๋ง‰์œผ๋กœ, Button ํด๋ฆญ ์ด๋ฒคํŠธ ํ•จ์ˆ˜์— ToastMessage ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์ค๋‹ˆ๋‹ค.

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ToastMessage("\n2oo1s.tistory");
        }

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•ด๋ณด๋ฉด ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ, TextBlock ์œ„์น˜์— ๋ฉ”์„ธ์ง€๊ฐ€ ๋–ด๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
Comments