Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Работа с графикой. Пожалуйста, помогите! Добавлено: 24.06.04 15:35  

Автор вопроса:  K&M | ICQ: 225442067 
Начал создавать новый проэкт, даже уже создал, а в
нём очень серьёзная проблема: дело в том, что мне необходимо рисовать на форме точками, например траву. И необходимо зарисовать так примерно пол-формы. Но получается ужасно медленно рисованием, используя стандартные методы для работы с графикой. Как осуществить другой, более динамичный вариант?
Или скажите, как хотя бы просто на форме нарисовать обычный BMP-файл? В VB6 этот метод назывался PaintPicture(). Заранее спасибо.

Ответить

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

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



ICQ: 280044491 

Вопросов: 43
Ответов: 227
 Профиль | | #1 Добавлено: 24.06.04 16:10
если рисуешь на форме то в ее коструктор добавь:

SetStyle( ControlStyles.DoubleBuffer , true)
SetStyle( ControlStyles.UserPaint , true)
SetStyle( ControlStyles.AllPaintingInWmPaint , true)

должно немного помочь, по крайней мере разницу должен увидеть..
а как ты вообще рисушь?



Ответить

Номер ответа: 2
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #2 Добавлено: 24.06.04 17:42
Извиняюся, за задержку...
У меня программа просто считывает данные из файла, а затем поочерёдно рисует точки:
For i = 0 to N
    GBrush.color = ColN
    Graph.Fillrectangle(GBrush, X, Y, 1, 1)
Next
   Где:
   Graph объект класса Graphics
   GBrush - New SolidBrush

Считывая данные получаем координаты X, Y и цвет Col и.т.д.

Ответить

Номер ответа: 3
Автор ответа:
  Артём Л.



ICQ: 280044491 

Вопросов: 43
Ответов: 227
 Профиль | | #3 Добавлено: 24.06.04 17:59
ну а то что я посоветовал не помогло?



Ответить

Номер ответа: 4
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #4 Добавлено: 24.06.04 18:08
А куда собственно нужно это писать? Я вставлял это в "Windows forms designer generated code", а оно пишет что-то типа функция не объявлена...

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 24.06.04 18:13
Юзай обычный unmanaged GDI... Он намного шустрее работает.

Ответить

Номер ответа: 6
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #6 Добавлено: 24.06.04 18:15
А это где искать?

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 24.06.04 18:22
Это библиотека, содержащая функции API, предназначенные для
рисования... GDI+ - фактически лишь оболочка для GDI.
Ищи в MSDN "GDI (graphics device interface)".

Ответить

Номер ответа: 8
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #8 Добавлено: 24.06.04 18:24
Спасибо, буду искать!

Ответить

Номер ответа: 9
Автор ответа:
  Артём Л.



ICQ: 280044491 

Вопросов: 43
Ответов: 227
 Профиль | | #9 Добавлено: 24.06.04 18:26
вот сюда:

Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
SetStyle( ControlStyles.DoubleBuffer , true)
SetStyle( ControlStyles.UserPaint , true)
SetStyle( ControlStyles.AllPaintingInWmPaint , true)

End Sub



Ответить

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



ICQ: 9481061 

Вопросов: 18
Ответов: 132
 Профиль | | #10 Добавлено: 25.06.04 00:18
Графикой на Нете никогда не занимался, но если мыслить логически, то можно сделать следующие выводы, исходя из того, что тебе нужно нарисовать точку:
- DrawRectangle будет работать быстрее чем FillRectangle, т.к. ничего закрашивать не надо
- DrawLine отработает еще быстрее
- ну и еще быстрее, видимо, будет, если рисовать точку. Если такой метод конечно найдется.

Ответить

Номер ответа: 11
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #11 Добавлено: 25.06.04 17:57
В том то и дело, что я тоже так думал, но Drawrectangle у меня со стороной в 1 пиксел совешенно невидим, а точку я не нашел как нарисовать...

Ответить

Номер ответа: 12
Автор ответа:
 K&M



ICQ: 225442067 

Вопросов: 20
Ответов: 170
 Профиль | | #12 Добавлено: 25.06.04 18:02
В любом случае всем спасибо!

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 25.06.04 19:50
Точку можно нарисовать только у класса BitMap, кажется, метод
SetPixel.

Увы, он его не "рисует", а только "ставит", что плохо, когда рисуешь
полупрозрачными кистями...

Ответить

Номер ответа: 14
Автор ответа:
 ШевТ



ICQ: 165728420 

Вопросов: 1
Ответов: 96
 Профиль | | #14 Добавлено: 30.06.04 07:20
Все таки ГДИ+ предпочтительнее долбаных ГДИАПИ.
Я уже игру на первом накалбасил (Змейка обычная).

Если через двойной буфер рисовать - то нормально будет, хотя скорости заоблачной не ждите. Тут тогда лучше ОПЕНГЛ.

Ответить

Страница: 1 |

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



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