Эффект наведения CSS в кнопке или панели C # [дубликат]

Я использую Laravel 5.3, mysql 5.7.12, на laravel homestead (0.5.0, я полагаю)

Даже после явной настройки редактирования /etc/mysql/my.cnf, чтобы отразить:

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Я все еще получал ошибку.

Мне пришлось изменить config/database.php с true на false:

    'mysql' => [
        'strict' => false, //behave like 5.6
        //'strict' => true //behave like 5.7
    ], 

Дальнейшее чтение:

https: // laracasts.com/discuss/channels/servers/set-set-sql-mode-on-homestead https://mattstauffer.co/blog/strict-mode-and-other-mysql-customizations- в-Laravel-5-2

2
задан Brian 16 January 2013 в 20:55
поделиться

3 ответа

Итак, во-первых, вы не хотите делать то же самое 3 раза. Создайте один метод, чтобы добавить соответствующие обработчики для кнопки, а затем просто напишите код один раз , чтобы обрабатывать любую данную кнопку.

Обратите внимание, что вы можете перейти к расширению / контракту и используйте значение percentComplete для установки высоты, чтобы переместить цвет по спектру (это потребует некоторой математики цветов, которые нужно сделать) или изменить любой другой аспект кнопки. Если вы действительно мотивированы, чтобы обобщить его, вы можете добавить параметр к методу Action<double>, который что-то делает для объекта на основе данного процента прогресса.

public void AddAnimation(Button button)
{
    var expandTimer = new System.Windows.Forms.Timer();
    var contractTimer = new System.Windows.Forms.Timer();

    expandTimer.Interval = 10;//can adjust to determine the refresh rate
    contractTimer.Interval = 10;

    DateTime animationStarted = DateTime.Now;

    //TODO update as appropriate or make it a parameter
    TimeSpan animationDuration = TimeSpan.FromMilliseconds(250);
    int initialWidth = 75;
    int endWidth = 130;

    button.MouseHover += (_, args) =>
    {
        contractTimer.Stop();
        expandTimer.Start();
        animationStarted = DateTime.Now;
        button.BackColor = Color.DimGray;
    };

    button.MouseLeave += (_, args) =>
    {
        expandTimer.Stop();
        contractTimer.Start();
        animationStarted = DateTime.Now;
        button.BackColor = Color.Red;
    };

    expandTimer.Tick += (_, args) =>
    {
        double percentComplete = (DateTime.Now - animationStarted).Ticks
            / (double)animationDuration.Ticks;

        if (percentComplete >= 1)
        {
            expandTimer.Stop();
        }
        else
        {
            button.Width = (int)(initialWidth +
                (endWidth - initialWidth) * percentComplete);
        }
    };

    contractTimer.Tick += (_, args) =>
    {
        double percentComplete = (DateTime.Now - animationStarted).Ticks
            / (double)animationDuration.Ticks;

        if (percentComplete >= 1)
        {
            contractTimer.Stop();
        }
        else
        {
            button.Width = (int)(endWidth -
                (endWidth - initialWidth) * percentComplete);
        }
    };
}
5
ответ дан Servy 24 August 2018 в 02:45
поделиться

При изменении свойств элементов управления он вступает в силу мгновенно. То, что вы хотите, это то, что обычно известно как некоторый тип выцветания или твинирования. Там могут быть библиотеки, чтобы сделать это, но если вы хотите написать это сами для удовольствия, вы можете использовать объект Timer, а при каждом обновлении цвета - цвет.

. Что вы сделаете, это установить цвет как TargetColor где-нибудь (это переменная или свойство, которое вы составляете), а затем запустите таймер, который тикает, может быть, каждые 10 миллисекунд. В каждом тике вы смотрите на время начала и сколько времени прошло с тех пор. Если вы хотите, чтобы анимация состояла из полной секунды, то это 1000 миллисекунд. Таким образом, во время каждого тика вы просматриваете количество пройденного времени, возможно, 200 миллисекунд, затем разделите 200/1000, чтобы получить долю времени, в которое вы попали в анимацию. Затем вы смотрите на разницу между цветом «Пуск» и «Целевой цвет», умножайте эту разницу на фракцию и добавьте результат в начальный цвет. Другими словами, 200 миллисекунд в анимацию, которая длится 1000 миллисекунд, означает, что вы составляете 20% в анимации. Таким образом, вы хотите установить цвет любого цвета на 20% от цвета начала до конца.

Вы можете сделать это, чтобы его улучшить. Возможно, имеется элемент управления подкласса Button, который инкапсулирует таймер и предоставляет функции / свойства для отслеживания цвета начала и конца, времени перехода анимации и т. Д. Большинство анимированных функций пользовательского интерфейса, как это, позволяют указать, как долго должна длиться анимация, а затем она интерполирует промежуточный как он переходит. Это происхождение термина tweening, поскольку оно происходит от перехода от одного состояния к другому путем inbetweening

0
ответ дан AaronLS 24 August 2018 в 02:45
поделиться

Если вы используете WinForms, анимации будут довольно болезненными, и вам придется обрабатывать их самостоятельно через объекты Timer.

Если вы попадаете в .NET и хотите сделать cool- я смотрю на приложения с аниматонами и стилями, я настоятельно рекомендую вам взглянуть на WPF. Это может сделать анимацию очень легко, хотя C # или XAML .

Хотя это еще возможно в WinForms, это займет гораздо больше времени разработки, функции встроены в WPF уже (и оптимизированы).

3
ответ дан Erik 24 August 2018 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: