Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Размеры в Image1 Добавлено: 08.04.10 13:37  

Автор вопроса:  Andrey999 | Web-сайт: www.radio-device.narod.ru | ICQ: 30852361 
У меня такая задача, в базе хранятся имена графических файлов (картинок JPG и.т.п.). На форме есть элемент Image с размерами допустим 150 на 250. Картинки разного рамера загружаются в Image, если я ставлю свойство stretch.true то маленькие картинки он растягивает если False то большие обрезает.
Вопрос: как сделать так чтобы маленькие не растягивал, а большие не обрезал. То есть, ЕСЛИ картинка <= 150 то размеры ее сохранить, если >=151 то сжать ее до размеров 150


FileBin = Data1.Recordset.Fields("pPath") & ""

FileTemp = strDBPathP & "\" + (CStr(FileBin))

'Dim v, d
'v = Image1.Height '/ Screen.TwipsPerPixelY
'd = Image1.Width '/ Screen.TwipsPerPixelX
'
'If v <= 6376 Or d <= 12357.39 Then
'Image1.Stretch = True
'End If
'If v >= 6376 Or d >= 12357.39 Then
'Image1.Stretch = False
'End If

Me.Image1.Picture = LoadPicture(FileTemp)


Я пытался сделать так, получается фигня.

Помогите кто чем может!

Ответить

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

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 08.04.10 15:31
  1.  
  2. Image1.Stretch = Image1.Picture.Width > 150

Ответить

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



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #2
Добавлено: 08.04.10 15:59
Что-то я не понял... А можно весь код показать?

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 08.04.10 16:25
То, что я написал, равносильно этому:
  1.  
  2. If Image1.Picture.Width > 150 Then 'Если ширина картинки больше 150
  3. Image1.Stretch = True 'То растягиваем ее
  4. Else 'Иначе
  5. Image1.Stretch = False 'Оставляем как есть
  6. End If


Это вполне соответствует тому, что ты написал.

Ответить

Номер ответа: 4
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #4
Добавлено: 08.04.10 16:44
Если быть точным: кинь на форму Picture1 с Visible = False

  1. Picture1.Picture = LoadPicture(...)
  2. Picture1.AutoSize = True;
  3. Image1.Picture = Picture1.Picture
  4. Picture1.ScaleMode = vbPixels
  5. If Picture1.ScaleWidth > 150 Then 'Если ширина картинки больше 150
  6. Image1.Stretch = True 'То растягиваем ее
  7. Else 'Иначе
  8. Image1.Stretch = False 'Оставляем как есть
  9. End If

Ответить

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



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #5
Добавлено: 09.04.10 00:06
Не получается. То есть если изображение входит в эти рамки отображается нормально, а если оно больше по размеру выходит за рамки Image

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 09.04.10 00:34
Даю наводку
  1. Dim W As Single, H As Single
  2. W = ScaleX(Image1.Picture.Width, vbHimetric, vbPixels)
  3. H = ScaleY(Image1.Picture.Height, vbHimetric, vbPixels)

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 09.04.10 12:32
Ну дай тада и на закуску :)

Ответить

Номер ответа: 8
Автор ответа:
 AWP



ICQ: 345685652 

Вопросов: 96
Ответов: 1212
 Web-сайт: xawp.narod.ru
 Профиль | | #8
Добавлено: 09.04.10 17:51
Я, пожалуй, напиво.

Ответить

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



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #9
Добавлено: 11.04.10 10:25
Наводка мне не помогла :( можно поподробней

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 11.04.10 13:36
я показал как узнать размер картинки. А дальше проверяешь в зависимости от размера ставить stretch=true или false

Ответить

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



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #11
Добавлено: 11.04.10 20:52
Вот как делаю я
Большие все равно растягивает за форму
  1. Private Sub TDBGrid3_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
  2.  
  3. On Error Resume Next
  4.  
  5. Dim w As Single, H As Single
  6. Dim d
  7.  
  8. Screen.MousePointer = vbHourglass
  9.  
  10. w = ScaleX(Image1.Picture.Width, vbHimetric, vbPixels)
  11. H = ScaleY(Image1.Picture.Height, vbHimetric, vbPixels)
  12.  
  13. FileBin = Data1.Recordset.Fields("pPath") & ""
  14. FileTemp = strDBPathP & "\" + (CStr(FileBin))
  15.  
  16. Picture1.Picture = LoadPicture(FileTemp)
  17.  
  18. 'Picture1.AutoSize = True
  19. Image1.Picture = Picture1.Picture
  20. Picture1.ScaleMode = vbPixels
  21. If Picture1.ScaleWidth > 200 Then '&#197;&#241;&#235;&#232; &#248;&#232;&#240;&#232;&#237;&#224; &#234;&#224;&#240;&#242;&#232;&#237;&#234;&#232; &#225;&#238;&#235;&#252;&#248;&#229; 200
  22. Image1.Stretch = True '&#210;&#238; &#240;&#224;&#241;&#242;&#255;&#227;&#232;&#226;&#224;&#229;&#236; &#229;&#229;
  23. Else '&#200;&#237;&#224;&#247;&#229;
  24. Image1.Stretch = False '&#206;&#241;&#242;&#224;&#226;&#235;&#255;&#229;&#236; &#234;&#224;&#234; &#229;&#241;&#242;&#252;
  25. End If
  26. 'On Error Resume Next
  27. Me.Image1.Picture = LoadPicture(FileTemp)
  28.  
  29. Screen.MousePointer = vbDefault
  30.  
  31. End Sub

Ответить

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



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #12
Добавлено: 12.04.10 10:01
Все, спасибо, сам разобрался :)

Ответить

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



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #13
Добавлено: 12.04.10 21:55
Зачем ты поставил LoadPicture ПОСЛЕ проверки размеров (естественно проверять надо W и H)?

Ответить

Номер ответа: 14
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #14
Добавлено: 12.04.10 23:25
Для креатива, смекаешь?

Ответить

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



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

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #15
Добавлено: 13.04.10 00:05
Да уж, напоминает раннего Пикассо. Или я не понимаю чего-то, или чел порет херню.

Ответить

Страница: 1 |

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



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