Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
951
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
941
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1725
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Простая анимация в WinForms
Представьте, что вы хотите анимировать какой-то объект на WinForm. Вы настраиваете таймер для обновления состояния или модели и переопределения события рисования формы. Но с этого момента, каков лучший способ постоянно перекрашивать форму для анимации?
- Аннулировать форму, как только вы закончите рисовать?
- Установить второй таймер и аннулировать форму на регулярной основе?
- Может быть, в этом деле есть какая-то общая закономерность?
- Есть ли какие-нибудь полезные классы .NET, чтобы помочь?
Каждый раз, когда мне нужно это сделать, я обнаруживаю новый метод с новым недостатком. Каковы опыт и рекомендации сообщества SO?
Я создал библиотеку, которая может помочь в этом. Это называется переходы, и их можно найти здесь: http://code.google.com/p/dot-net-transitions/
Он использует таймеры, работающие в фоновом потоке, чтобы анимировать объекты. Библиотека с открытым исходным кодом, так что если она вам пригодится, вы можете посмотреть на код, чтобы увидеть, что он делает.
В некоторых ситуациях быстрее и удобнее не рисовать с помощью события paint, а получать графический объект из элемента управления / формы и рисовать "on". Это может дать некоторые проблемы с непрозрачностью / сглаживанием / текстом и т. д., Но может стоить проблем с точки зрения отсутствия необходимости перекрашивать весь шабанг. Что-то в этом роде ... :
private void AnimationTimer_Tick(object sender, EventArgs args)
{
// First paint background, like Clear(Control.Background), or by
// painting an image you have previously buffered that was the background.
animationControl.CreateGraphics().DrawImage(0, 0, animationImages[animationTick++]));
}
Я сам использую это в некоторых элементах управления и буферизую изображения для "clear" фона, когда объект интереса перемещается или должен быть удален.
То, что вы делаете, - это единственное решение, которое я когда-либо использовал в WinForms (таймер с постоянными перерисовками). Существует множество методов, которые можно использовать, чтобы сделать работу пользователя с ним более плавной (например, двойная буферизация).
Возможно, вы захотите попробовать WPF. Есть встроенные средства для выполнения анимации в WPF, и они гораздо более гладкие (и требуют меньше кода и никакой синхронизации с вашей стороны), чем решение на основе таймера.
Обратите внимание, что вам не нужно использовать WPF во всем вашем приложении для этого решения; можно упаковать эту функциональность в элемент управления WPF и встроить элемент управления в приложение WinForms (или неуправляемое приложение, если на то пошло):
http://www.codeproject.com/KB/WPF/WPF_UserControls.aspx