Страница: 1 | 
		
		 
			   
			 
			 Помогите люди добрые порубить картинку из PictureBox`а на 4 картинки или хотя бы как от нее кусочек откромсать, чтоб использовать потом в качестве картинки 
			 
			 я думаю нужно создать массив, и считать туда по-пиксельно нужную тебе часть картинки, а потом отобразить этом масси в другой PictureBox.  to Orca: Копирование из Picture1 в Picture2 части изображения размером 100*100 пкс. Dim lColor&, x&, y& For y = 0 To 100 Вроде правильно... to sne: что эт такое и как этим пользоваться -PictureBox.PaintPicture()? Я раньше с изображениями не работал, так что знаю мало.   Ну, как, берем PictureBox, и пишем Picture1.PaintPicture(...), а дальше ориентируемся по подсказке... все... Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long The BitBlt function performs a bit-block transfer of the color data corresponding to a rectangle of pixels from the specified source device context into a destination device context. Все-таки объясню подробнее. Берешь форму, на нее кладешь два PictureBox, кидаешь в них картинки, ставишь им AUTOREDRAW в TRUE. Далее код формы Option Explicit Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long Private Sub Form_Load() Dim ret As Long ret = BitBlt(Picture1.hDC, 20, 20, 80, 80, Picture2.hDC, 30, 30, vbSrcCopy) End Sub Поверь, это побыстрей чем циклами  Забыл одну мелочь. Если хочешь нормально позиционировать картинки и правильно поделить их на части, не забудь поставить свойства PictureBox'ов ScaleMode=3 - Pixel. Все апишные функции работают только с пикселями, а в VB по дефолту стоит твип. 2 LamerOnLine, забыл еще одну мелочь - при использовании данной апи, да в общем-то и не только, из второго PictureBox'a, чтобы получить картинку, нужно будет использовать PictureBox.Image, в отличие от стандартного PictureBox.Picture... И что? В любом случае, если ты рисуешь что-либо через hDC пикчербокса, это не сохранится как Picture. Чем Image не катит? Зато работает шутрее PaintPicture, и уж тем более цикла. Кроме того, через PaintPicture ты вряд ли сумеешь вытянуть картинку из другого приложения или из того же пикчербокса, в котором рисовалось через hDC. Так что можно подумать что удобнее. Видимо, зависит от ситуации. В конце концов, никто не мешает прикольнуться подобным образом: Picture1.Picture=Picture1.Image Забавно, но работает  Ладно, я думаю хватит об этом спорить :D Попросту я думаю, что человеку спрашивающий подобный вопрос, куда проще будет работать со стандартными VB'шными функциями, еже-ли с API, хотя если чел умеет работать с АПИ, пусть пользуется... дело вкуса и случая... Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: Как отрезать кусочек картинки?
     
    
Добавлено: 24.03.04 19:39
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Orca
 Orca
      
       
  
 
    
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 10
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: ISpy
 ISpy






Разработчик Offline Client
Вопросов: 47
Ответов: 621
      
 Web-сайт:  
 Профиль |  | #1
      
Добавлено:  24.03.04 19:55
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: sne
 sne





Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  24.03.04 20:19
       
    
       
  
 
     )) ISpy, можно и проще:
)) ISpy, можно и проще:
Использовать PictureBox.PaintPicture()
А можно воспользоваться АПИ BitBlt() или StretchBlt()
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: ISpy
 ISpy






Разработчик Offline Client
Вопросов: 47
Ответов: 621
      
 Web-сайт:  
 Профиль |  | #3
      
Добавлено:  24.03.04 20:52
       
    
       
  
 
    
В обоих PictureBox'ах сделай свойство ScaleMod: 3-Pixel
 For x = 0 To 100
  lColor = Picture1.Point(x, y) 'Считываем пиксель из Picture1
  Picture2.PSet (x, y), lColor  'и рисуем его в Picture2
 Next x
Next y
Попробуй.
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: sne
 sne





Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  24.03.04 23:06
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: LamerOnLine
 LamerOnLine



ICQ: 334781088 
Вопросов: 108
Ответов: 2822
      
 Профиль |  | #5
       
Добавлено:  25.03.04 10:38
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 6 
      
Автор ответа: LamerOnLine
 LamerOnLine



ICQ: 334781088 
Вопросов: 108
Ответов: 2822
      
 Профиль |  | #6
       
Добавлено:  25.03.04 10:55
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 7 
      
Автор ответа: LamerOnLine
 LamerOnLine



ICQ: 334781088 
Вопросов: 108
Ответов: 2822
      
 Профиль |  | #7
       
Добавлено:  25.03.04 11:03
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 8 
      
Автор ответа: sne
 sne





Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #8
      
Добавлено:  25.03.04 11:11
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 9 
      
Автор ответа: LamerOnLine
 LamerOnLine



ICQ: 334781088 
Вопросов: 108
Ответов: 2822
      
 Профиль |  | #9
       
Добавлено:  25.03.04 11:30
       
    
       
  
 
     )
)
		
	  
			 
	
		 
    
       
    
Номер ответа: 10 
      
Автор ответа: sne
 sne





Разработчик Offline Client
ICQ: 233286456 
Вопросов: 34
Ответов: 5445
      
 Web-сайт:  
 Профиль |  | #10
      
Добавлено:  25.03.04 18:23