Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
 Аватар для папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88

Простенькая анимация

11.03.2011, 22:25. Показов 4061. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь написать программу, при включении которой, шарик начинает двигаться по форме и отскакивать от стенок. Для того чтобы сзодать движение пытаюсь обработать событие Timer_Tick
VB.NET
1
2
3
4
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim a As Graphics
        a.DrawEllipse(New Pen(Color.Red), 10, 10, 20, 20)
    End Sub
Но пишет, что не присвоено значегие "а", а как это сделать? Помогите новичку советом)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.03.2011, 22:25
Ответы с готовыми решениями:

Простенькая анимация
По мере изучения языка паскаль встретил задание на создание простенькой анимации для консоли 80х25. Прошу помощи в нахождении ошибки....

Простенькая анимация. Пример
Все привет! дайте пожалуйста "наводку" каким образом сделать примерно такую анимацию.

Анимация в OpenGL, а где собсно, анимация?
// Bounce.cpp // Demonstrates a simple animated rectangle program with GLUT // OpenGL SuperBible, 3rd Edition // Richard S. Wright...

9
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
11.03.2011, 22:48
папаКарил, надо писать
VB.NET
1
Dim a As Graphics = Me.CreateGraphics()
, а то объявил переменную, но не инициализировал и ни чему не присвоил ее.
1
 Аватар для папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
11.03.2011, 22:53  [ТС]
Тогда еще один вопрос, а можно сделать так, чтобы нарисованный кружочек отражался повеерх панели(находящейся на форме), а не под понелью?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
11.03.2011, 22:57
Тогда попробуй
VB.NET
1
Dim a As Graphics = Panel1.CreateGraphics()
, но обычно для рисования иcпользуют PictureBox
1
 Аватар для папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
12.03.2011, 10:06  [ТС]
Вот что получилось

А можно ли убрать хвост? пробовал пустить за ним черный шарик не получается , слишком муторно
Вложения
Тип файла: rar Шарик.rar (115.2 Кб, 141 просмотров)
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2011, 10:35
Перед всей процедурой рисования делаешь PictureBox1.Refresh - это обновляет контрол, а переменные лучше объявлять с ключевым словом Static - то есть, не
VB.NET
1
Dim x As Integer
, a
VB.NET
1
Static x As Integer
1
 Аватар для папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
12.03.2011, 10:47  [ТС]
а за что отвечает Static? Потому что перед a он ставится, перед x не хочет.
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2011, 10:55
Не я сказал что лучше, если объявдлять глобальные переменные на уровне формы, то Dim
Но часто переменные создаются непосредственно в используещей их процедуре, и если планируется что они будут менять свои значения и при этом сохранять свое последнее значение, то там как Static типа
VB.NET
1
2
3
4
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static x As Integer=0
......
End Sub
1
 Аватар для папаКарил
10 / 3 / 1
Регистрация: 07.03.2011
Сообщений: 88
12.03.2011, 13:19  [ТС]
прибавил к программе СheckBox при значение Checked которого на PictureBox выводтся произвольная горизонтальная линия. Как сделать так чтобы шарик отскакивал от этой линии?

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  Dim x1 As Integer
    Dim y1 As Integer
    Dim x2 As Integer
    Dim y2 As Integer
    Dim x As Integer = 10
    Dim y As Integer = 30
    Dim a As Integer = 5
    Dim b As Integer = 20
    Dim xx As Integer = 30
    Dim yy As Integer = 30
    Dim L As Integer = 10
    Dim R As Integer = 315
    Dim U As Integer = 10
    Dim D As Integer = 265
    Dim dx As Integer = 10
    Dim dy As Integer = 10
 
 
 
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Static a As Graphics = PictureBox1.CreateGraphics
        PictureBox1.Refresh()
 
        
        If x < L Then dx = -dx
        If y < U Then dy = -dy
        If y > D Then dy = -dy
        If x > R Then dx = -dx
        If x >= x1 And x <= x2 And y = y1 Then dx = -dx And dy = -dy
 
 
        a.DrawEllipse(New Pen(Color.Red), x, y, xx, yy)
 
 
        x = x + dx
        y = y + dy
 
 
    End Sub
 
 
    Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click
        If CheckBox1.Checked = True Then
            Timer2.Start()
        Else : Timer2.Stop()
        End If
 
        x1 = Int(Rnd() * 130) + 10
        y1 = Int(Rnd() * 150) + 10
        x2 = Int(Rnd() * 325)
       
    End Sub
 
    Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Static a As Graphics = PictureBox1.CreateGraphics
 
        a.DrawLine(New Pen(Color.White), x1, y1, x2, y1)
 
 
    End Sub
вроде бы все правильно, а пролетает через линию
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
12.03.2011, 15:05
Измени процедуру второго таймера на
VB.NET
1
2
3
4
Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Dim a As Graphics = PictureBox1.CreateGraphics
        U = x1
        a.DrawLine(New Pen(Color.White), x1, y1, x2, y1)
Но в целом очень ужасный код, можно и без второго таймера все сделать. А переменную Graphics не надо объявлять со словом Static. Static используется в основном с координатами - x,y,z.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2011, 15:05
Помогаю со студенческими работами здесь

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

Простенькая БД на С++
Здраствуйте,нужно было написать простую БД В меню 4 пункта,допустим выбираем пункт 2 &quot; 2. Udalenie &quot; &lt;&lt; endl;,обращаемся...

Простенькая БД
В универе дали задание сделать БД. А объяснить ничего не объяснили... Вот сейчас сижу голову ломаю. Создал простенькую БД в access, с...

Простенькая БД
Нужно создать БД &quot;Аптека&quot;, которая будет включать хранение, реализацию и поставку. Очень нужно, буду очень благодарен

простенькая задачка
Здраствуйте, люди добрые!) Подскажите решение, ато сыну задали в школе и он чето туго соображает) Дано натуральное число. Определить на...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru