Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Помогите заставить графику двигаться в VB 2010 Добавлено: 07.01.11 22:41  

Автор вопроса:  Nakeji
Всё просто - мне нужен например круг, и чтобы он двигался посредством таймера. Тобишь стирался старый и рисовался новый. В этом новом VB так и не смог разобраться... Так что очень прошу, напишите мне КОД, который будет осуществлять вышеописанную операцию. Заранее спасибо.

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Лёха



Вопросов: 20
Ответов: 79
 Web-сайт: supersait16.ucoz.ru
 Профиль | | #1
Добавлено: 07.01.11 23:20
Кароче берёшь изображение,по которому должен двигаться твой круг,загружаешь его в Bitmap
  1.  
  2. Bitmap Origin = new Bimtap.FromFile("MyImage.jpg");


Потом вычисляешь в процедуре координаты шарика,далее создаешь копию Origin`а,и в кидаешь это в таймер!
  1.  
  2. Bitmap Tmp = (Bitmap)Origin.Clone();
  3. Graphix g = g.FromImage(Tmp);
  4. g.DrawEllipse(new Pen(Brushes.Blue),new Rectangle(x+5,y+10,20,20));

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 07.01.11 23:24
прикольно...
такой подход всю память отожрет которая есть в компе

Ответить

Номер ответа: 3
Автор ответа:
 Nakeji



Вопросов: 2
Ответов: 3
 Профиль | | #3 Добавлено: 07.01.11 23:50
копернул это в VB, нормально так 20 ошибок выдало -_-
не понимаю к чему эти точки с запятой в конце каждой строки

я вообще не шарю (тупой), прошу ВЕСЬ КОД, вот вообще всё что у вас в form1 написано, чтобы мне было достаточно просто скопировать это в код, и она работала (ну, я добавлю таймер уж)

Ответить

Номер ответа: 4
Автор ответа:
 Захарка



Вопросов: 0
Ответов: 42
 Профиль | | #4 Добавлено: 08.01.11 03:39
1)Обьявляеш глобальные переменные x и y типа int
2)добавляеш обработчик события paint
3)в нём пишеш:
  1. e.Graphics.FillEllipse(Brushes.Red, new Rectangle(x, y, 20, 20))

4)добавляеш обработчик события timer_tick, в нём пишеш:
  1. Me.Invalidate()

всё

Ответить

Номер ответа: 5
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #5 Добавлено: 08.01.11 11:02
я один вижу что нужен не нэт? )

вот примерчик на 6 бэйсике
  1.  
  2. Private Sub Form_Load()
  3. picAnim.BackColor = vbBlue
  4. Me.Show
  5. 'Количество оборотов
  6. intRev = 100
  7. 'Масштаб
  8. picAnim.Scale (-10, 10)-(10, -10)
  9. bytS = 10
  10.  
  11. 'Анимация
  12. For intN = 1 To 360 * intRev
  13. DoEvents
  14. 'Орбита Земли
  15. picAnim.Circle (0, 0), 8, vbYellow
  16. 'Солнце
  17. picAnim.FillColor = vbYellow
  18. picAnim.Circle (0, 0), 2, vbYellow
  19. 'Рисование Земли
  20. picAnim.FillColor = vbCyan
  21. picAnim.Circle (8 * Sin(6.28 / 360 * intN), 8 * Cos(6.28 / 360 * intN)), 1, vbCyan
  22. 'Задержка стирания
  23. For intI = 1 To 100000 * bytS
  24. Next intI
  25. 'Стирание Земли
  26. picAnim.FillColor = vbBlue
  27. picAnim.Circle (8 * Sin(6.28 / 360 * intN), 8 * Cos(6.28 / 360 * intN)), 1, vbBlue
  28. Next intN
  29. End Sub

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 08.01.11 11:05
я один вижу что нужен не нэт? )

А ты вообще вопрос читал? Там вроде ясно написано
Помогите заставить графику двигаться в VB 2010

Или в 2010 году вышел новый релиз 6-го бейсика?

Ответить

Номер ответа: 7
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #7
Добавлено: 08.01.11 11:51
да just ты один;)

Ответить

Номер ответа: 8
Автор ответа:
 Лёха



Вопросов: 20
Ответов: 79
 Web-сайт: supersait16.ucoz.ru
 Профиль | | #8
Добавлено: 08.01.11 16:29
EROS,у меня при таком подходе вообще мало памяти жрёт!!!!!!!!!!

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 08.01.11 17:31
Ну так радуйся,что в NET придумали GC .. Без него твой говнокод бы недолго проработал..

Ответить

Номер ответа: 10
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #10 Добавлено: 08.01.11 18:01
GC действительно в данном случае помогает избавиться от утечек. Но это не значит что у течек в этом коде нет.
Bitmap связан с неуправляемым ресурсом GDI, который называется (внезапно) bitmap (http://msdn.microsoft.com/en-us/library/dd183377(VS.85).aspx)

Сборщик мусора может обработать управлемый экземпляр класса Bitmap. И если этот объект удаляется сборщиком мусора, то будет вызван финализатор класса Bitmap, который знает как освобождать неуправляемые ресурсы, связанные с этим объектом. Поэтому в этом примере и не заметно утечки памяти.
Однако следует помнить что:
1) .NET не гарантирует время когда будет запущен финализатор (он не обязательно будет вызван сразу после сборки мусора)
2) .NET вообще не гарантирует что финализатор будет запущен.

Поэтому, несмотря на то, что ты сейчас не имеешь утечек памяти, у тебя нет гарантии того что они не появятся в определенных условиях. Причем речь идет о вполне тяжелых ресурсах (битмапах)

Поэтому я бы советовал явно выполнять удаление объектов GDI+ после их использования (с помощью метода Dispose с блоком Try или одного блока Using).

Ответить

Номер ответа: 11
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 08.01.11 18:26
Все сказанное коллегой выше в равной мере относится и к объекту Graphics

Ответить

Номер ответа: 12
Автор ответа:
 Just



Вопросов: 4
Ответов: 330
 Профиль | | #12 Добавлено: 08.01.11 19:16
я так понял что человек перепутал бэйсики тк он писал что выдало 20 ошибок

Ответить

Номер ответа: 13
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #13 Добавлено: 08.01.11 22:26
верно, Лёха дал говнокод для шарпа, никак не для васика.

Ответить

Номер ответа: 14
Автор ответа:
 Nakeji



Вопросов: 2
Ответов: 3
 Профиль | | #14 Добавлено: 09.01.11 00:47
Захарка, спасибо. Всё работает ) Я просто змейку делаю, мне надо было разобраться в этом. Кстати я ее сделал! У меня есть только одна проблема - они мигают, и чем больше змейка, тем больше мигает графика, в конце вообще невозможно становится. Это можно как нибудь исправить?

Ответить

Номер ответа: 15
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #15 Добавлено: 09.01.11 09:08
Если ты использовал код Захарки, то включение двойной буферизации тебе должно помочь.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам