Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Работа с графикой. Пожалуйста, помогите!
     
    
Добавлено: 24.06.04 15:35
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     K&M | ICQ: 225442067
 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
 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
 K&M


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






Администратор
ICQ: 326066673 
Вопросов: 368
Ответов: 5968
      
 Web-сайт:  
 Профиль |  | #5
      
Добавлено:  24.06.04 18:13
       
    
       
  
Юзай обычный unmanaged GDI... Он намного шустрее работает. 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: K&M
 K&M


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






Администратор
ICQ: 326066673 
Вопросов: 368
Ответов: 5968
      
 Web-сайт:  
 Профиль |  | #7
      
Добавлено:  24.06.04 18:22
       
    
       
  
Это библиотека, содержащая функции API, предназначенные для 
    
рисования... GDI+ - фактически лишь оболочка для GDI.
Ищи в MSDN "GDI (graphics device interface)".
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: K&M
 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
 Alex3

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


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


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







Разработчик
Вопросов: 130
Ответов: 6602
      
 Профиль |  | #13
       
Добавлено:  25.06.04 19:50
       
    
       
  
Точку можно нарисовать только у класса BitMap, кажется, метод 
    
SetPixel.
Увы, он его не "рисует", а только "ставит", что плохо, когда рисуешь
полупрозрачными кистями...
		
	  
			 
	
		 
    
       
    
Номер ответа: 14 
      
Автор ответа: ШевТ
 ШевТ










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