Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
1

Динамическое создание рисунка при нажатии на кнопку

09.06.2011, 17:40. Просмотров 2903. Ответов 21
Метки нет (Все метки)

При нажатии на кнопку должен появляться рисунок и двигаться в заданном направлении(с использованием уже готового Storyboard).
Вопрос, как создавать объекты динамически, при каком-либо событии, в частности при нажатии на кнопку и как грамотно при создании задавать урл рисунку.

Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2011, 17:40
Ответы с готовыми решениями:

Подсказка при нажатии на кнопку
Здравствуйте. Как в коде C# реализовать следующее: при нажатии на любую клавишу...

Событие при нажатии на кнопку
Здравствуйте! Извините за немного нубский вопрос. Возможно ли для элемента...

Не срабатывает при нажатии на кнопку Del
Не срабатывает при нажатии на кнопку не могу понять почему, хотя другие кнопки...

SocketException при повторном нажатии на кнопку
привет, вылетает ошибка при ВТОРОМ нажатие на кнопку "socketexception обычно...

Смена контента при нажатии на кнопку
Сап, есть такой вопрос. В некоторых лаунчерах или программах встречал такой вот...

21
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
09.06.2011, 18:11 2
C#
1
2
3
4
5
6
7
8
9
10
11
if (File.Exists(imagePath))
{
 
 Image icon = new Image();
 BitmapImage bmImage = new BitmapImage();
 bmImage.BeginInit();
//тут задается либо абсолютный либо относительный путь к файлу изображения
 bmImage.UriSource = new Uri(imagePath, UriKind.Absolute);
 bmImage.EndInit();
 icon.Source = bmImage; 
}
0
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
09.06.2011, 20:18  [ТС] 3
а можно этот созданный рисунок использовать в xaml файле в scoreboard?
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
10.06.2011, 00:36 4
в таком случае лучше создать image и storyboard в xaml, а source для image задавать динамически через код, если вы заранее не знаете какое изображение у вас будет, или оно, например, будет изменяться.
1
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
10.06.2011, 08:03  [ТС] 5
В том то и беда, что мне нужно, чтобы при нажатии на кнопку создавалась картинка и летела в угол, а если ее в хамл создать, она там всегда будет, на страничке...
как быть?
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
10.06.2011, 15:30 6
для этого есть такое свойство Visibility
0
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
11.06.2011, 15:10  [ТС] 7
извините, что так много вопросов задаю, просто по мере написания, вылазиют.

Как можно сделать выполнение нескольких строибоард последовательными, например, вод код на шарпе

C#
1
2
3
4
5
6
7
8
9
10
11
12
int[] t_array = new int[10];
            t_array = CheckTables();
            if (t_array[0] == 1) deal_player_0.Begin();
            if (t_array[1] == 1) deal_player_1.Begin();
            if (t_array[2] == 1) deal_player_2.Begin();
            if (t_array[3] == 1) deal_player_3.Begin();
            if (t_array[4] == 1) deal_player_4.Begin();
            if (t_array[5] == 1) deal_player_5.Begin();
            if (t_array[6] == 1) deal_player_6.Begin();
            if (t_array[7] == 1) deal_player_7.Begin();
            if (t_array[8] == 1) deal_player_8.Begin();
            if (t_array[9] == 1) deal_player_9.Begin();
необходимо, чтобы действия выполнялись последовательно, и еще такой вопрос, как можно сократить код, путем перебора всех элементов (а то они то только цифрами отличаются) и не прописывать каждый из них?
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
13.06.2011, 11:07 8
в один Storyboard вставь несколько анимаций подряд, тогда, я думаю, что второй вопрос отпадает автоматически.
XML
1
2
3
4
5
6
7
8
9
10
11
  <Storyboard>
              <DoubleAnimation 
                Storyboard.TargetName="MyRectangle"
                Storyboard.TargetProperty="Width"
                From="100" To="200" Duration="0:0:1" />
 
              <ColorAnimation 
                Storyboard.TargetName="MySolidColorBrush"
                Storyboard.TargetProperty="Color"
                From="Blue" To="Red" Duration="0:0:1" />  
            </Storyboard>
http://msdn.microsoft.com/ru-ru/library/ms742868.aspx
1
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
16.06.2011, 21:46  [ТС] 9
Все-таки, как запустить последовательно несколько сторибордов (в каждом по несколько анимаций)?
у меня есть несколько сторибордов (например 10), но пользователь выбирает некоторые из них (четные, например) и мне надо эти четные запустить все по очереди, а они запускаются параллельно.
Как сделать последовательно?
0
Casper-SC
Эксперт .NET
3638 / 1843 / 360
Регистрация: 27.03.2010
Сообщений: 5,164
Записей в блоге: 1
17.06.2011, 00:32 10
Я как-то тоже задавался вопросом, как закрыть окно, после воспроизведения анимации. Покажу как сделал. Предположим у меня есть анимация: окно улетает вдаль и по мере удаления становится прозрачным. Я хочу по окончании анимации завершить работу приложения. XAML смысла нет выкладывать, это легко делается в Expression Blend.

Событие закрытия окна:
C#
1
2
3
4
        private void Window_Closing(object sender, CancelEventArgs e)
        {
            AnimatedApplicationShutdown();
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
        /// <summary>
        /// Запустить анимацию, у которой событие Completed подписано на обработчик завершающий работу приложения
        /// </summary>
        private void AnimatedApplicationShutdown()
        {
            Storyboard shutdownStoryBoard = (Storyboard)FindResource("WindowCloseAnimation2");
            shutdownStoryBoard.Completed += (object sender, EventArgs e) =>
                {
                    Application.Current.Shutdown();
                };
            shutdownStoryBoard.Begin();
        }
Подписаться можно и через XAML, но в твоём случае нужно именно с кода.

Цитата Сообщение от catta Посмотреть сообщение
у меня есть несколько сторибордов (например 10), но пользователь выбирает некоторые из них (четные, например) и мне надо эти четные запустить все по очереди, а они запускаются параллельно.
Как сделать последовательно?
Может выбранные анимации загнать в массив и циклом подписывать на Completed? Так с ходу сложновато сказать, но придумать что нибудь можно.
1
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
17.06.2011, 06:01  [ТС] 11
Спасибо большое, обязательно опробую ваш совет.
Быть может вы поможете мне еще с одним?

у меня есть к примеру 10 сторибордов, отличаются они в названии только цифрами, например:
Storyboard1, Storyboard2, Storyboard3, Storyboard4 и так далее..
Как можно вызывать их с помощью цикла, то есть используя динамические переменные, например:

C#
1
2
3
4
for(int i=1; i<=10; i++)
{
    Storyboard+i.Begin();
}
естественно, данный код не работает, но может есть какая-нибудь альтернатива ему, естессно работающая?
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
17.06.2011, 12:37 12
зачем изобретать велосипед?? добавь все Storyboard в массив и вызывай из него:
C#
1
2
3
4
for(int i=1; i<=10; i++)
{
    Storyboards[i].Begin();
}
1
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
17.06.2011, 12:48  [ТС] 13
Как это сделать?
В том плане, как сделать массив из сторибордов, а не из их наименований?
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
17.06.2011, 12:57 14
как и другой любой массив:

C#
1
2
3
4
5
6
7
  
            Storyboard storyboard1 = new Storyboard();
            Storyboard storyboard2 = new Storyboard();
            //массив из Storyboard
            Storyboard[] storyboarArray = new Storyboard[10];
            storyboarArray[0] = storyboard1;
            storyboarArray[1] = storyboard2;
1
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
17.06.2011, 16:00  [ТС] 15
А как обратиться к сториборду из С#, если он у меня уже есть готовый в xaml. Как мне можно их использовать в С#. То есть, каким образом их можно тыкнуть из xaml в C#.

В xaml у них прописано имя и заданы некоторые трансформации.
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
17.06.2011, 16:15 16
если имя прописано в xaml, то можешь напрямую к нему по имени через C# обращаться.
0
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
18.06.2011, 22:19  [ТС] 17
теперь я использую массив из сторибоардов и вызываю их при помощи цикла, как описано выше, но они выполняются один за другим, как сделать так, чтобы выполнение было последовательным?
то есть последующий выполнялся после завершения предыдущего?
0
Casper-SC
Эксперт .NET
3638 / 1843 / 360
Регистрация: 27.03.2010
Сообщений: 5,164
Записей в блоге: 1
19.06.2011, 22:53 18
Цитата Сообщение от catta Посмотреть сообщение
теперь я использую массив из сторибоардов и вызываю их при помощи цикла, как описано выше, но они выполняются один за другим, как сделать так, чтобы выполнение было последовательным?
то есть последующий выполнялся после завершения предыдущего?
Динамическое создание рисунка при нажатии на кнопку

Покажи как ты что делаешь.
0
catta
0 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 15
20.06.2011, 08:56  [ТС] 19
C#
1
2
3
4
5
6
7
8
for (int i = 0; i <= 10; i++)
{
   if (t_array[i] == 1)
   {
       if (hz[i] == 0) { sbArray[i].Begin(); hz[i] = 1; }
       else { f_sbArray[i].Begin(); hz[i] = 0; }
   }
}
Итак, у меня есть несколько сторибордов, точнее, их 10 (количество не изменится), при выполнении условий (t_array[i] == 1) и (hz[i] == 0), мне нужно чтобы начинался сториборд - sbArray[i], но проблема в том, что цикл выполняется моментально и все сториборды, удовлетворяющие условиям, происходят практически параллельно, а мне нужно, чтобы каждый последующий из нах начинался после завершения первого.

может есть смысл останавливать нить? каждый из сторибордов длится 0,6 секунд.

Надеюсь, так понятнее.
Спасибо.
0
kenny69
burning1ife
1413 / 1235 / 292
Регистрация: 21.09.2008
Сообщений: 3,409
Записей в блоге: 9
20.06.2011, 12:05 20
запускай по таймеру с интервалом 0,6 сек
0
20.06.2011, 12:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2011, 12:05

Перемещение линии при нажатии на кнопку
Всем доброе время суток) я совсем недавно начал изучать WPF и не могу...

Изменение свойств при нажатии на кнопку
Добрый день, может кто поможет есть кнопка при нажатии на которую я хотел бы...

Реализовать изменение картинки при нажатии на кнопку
нужно чтоб после нажатия на кнопку картинка в image поменялась


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru