Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2013, 19:31   #1
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
Радость затемнение фона формы

добрый вечер. Есть форма, в которой в качестве фона используется картинка. можно ли сделать так чтобы фон постепенно становился темнее (имитация наступления вечернего времени суток) или светлее.
alex(21) вне форума Ответить с цитированием
Старый 14.03.2013, 20:19   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

В Msdn это есть.

Код:
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;
using System.Drawing.Imaging;


namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            var image = new Bitmap(this.BackgroundImage);

            ImageAttributes imageAttributes = new ImageAttributes();
            int width = image.Width;
            int height = image.Height;
            float brightness = 0.5F;

            float[][] colorMatrixElements = {
                                                new float[] {brightness, 0, 0, 0, 0},
                                                new float[] {0, brightness, 0, 0, 0},
                                                new float[] {0, 0, brightness, 0, 0},
                                                new float[] {0, 0, 0, 1, 0},
                                                new float[] {0, 0, 0, 0, 1}
                                            };

            ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

            imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
            Graphics graphics = Graphics.FromImage(image);
            graphics.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel, imageAttributes);

            this.BackgroundImage = image;

        }

        

    }
}
wm_leviathan вне форума Ответить с цитированием
Старый 14.03.2013, 22:01   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ещё вариант - рисовать поверх полупрозрачный прямоугольник черного цвета с постепенно увеличивающимся альфа-каналом.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 18.03.2013, 14:58   #4
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

wm_leviathan, не могу переделать под trackBar так как не совсем понял смысл данного кода. исправьте пожалуйста если не сложно.

Последний раз редактировалось alex(21); 18.03.2013 в 16:05.
alex(21) вне форума Ответить с цитированием
Старый 19.03.2013, 14:19   #5
alex(21)
Форумчанин
 
Аватар для alex(21)
 
Регистрация: 09.06.2009
Сообщений: 545
По умолчанию

исправил под trackBar. при передвижении ползунка влево фон становится темнее. а как сделать чтобы рисунок становился светлее? насколько я понял цвета задаются в матрице
Код:
float[][] colorMatrixElements = {
                                                new float[] {brightness, 0, 0, 0, 0},
                                                new float[] {0, brightness, 0, 0, 0},
                                                new float[] {0, 0, brightness, 0, 0},
                                                new float[] {0, 0, 0, 1, 0},
                                                new float[] {0, 0, 0, 0, 1}
                                            };
создал подобную матрицу, но не работает
Код:
float[][] colorMatrixElements2 = {
                                                new float[] {1, 0, 0, 0, 0},
                                                new float[] {0, 1, 0, 0, 0},
                                                new float[] {0, 0, 1, 0, 0},
                                                new float[] {0, 0, 0, 1, 0},
                                                new float[] {0, 0, 0, 0, 1}
                                            };
            ColorMatrix colorMatrix2 = new ColorMatrix(colorMatrixElements2);
alex(21) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Затемнение экрана Renok Общие вопросы Delphi 1 02.05.2012 19:16
Изменение фона формы | MouseMove Sourence Общие вопросы C/C++ 0 03.02.2012 00:40
Затемнение фона s24t JavaScript, Ajax 3 05.07.2011 11:29
Как задать для формы произвольный цвет фона, который отличается от установленного по умолчанию на С# phabion Общие вопросы .NET 2 21.04.2010 16:29
Canvas затемнение Лубышев Общие вопросы Delphi 4 26.02.2010 13:26