Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Изменения размера Image Добавлено: 06.03.09 20:08  

Автор вопроса:  Aston | ICQ: 214-179-991 
Привет всем.
Ребята такой вопросик, как сделать имаже, чтобы размер компонента можно было менять в запущеном проекте - как изменение размеров формы - мышкой?

Ответить

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

Номер ответа: 1
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #1
Добавлено: 06.03.09 20:48
Привет тебе тоже.
  1. Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  2. If Button = vbLeftButton Then
  3. Image1.Stretch = True
  4. Image1.Width = X + 10
  5. Image1.Height = Y + 10
  6. End If
  7. End Sub

Ты смотри на возможности компонента при различных действиях, это наведет тебя на мысли как его использовать.
Смотреть нужно в скобках например как здесь Private Sub Image1_MouseMove()

Ответить

Номер ответа: 2
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #2
Добавлено: 06.03.09 20:53
Раскладка-(Button As Integer, Shift As Integer, X As Single, Y As Single)
1 Button = vbLeftButton если левой клавишей прижали рисунок и неотпускаем
2 пропускаем
3 Image1.Width = X + 10 ширина для чкго плюс? да что бы непотерять фокус.
4 Image1.Height = Y + 10 высота

Ответить

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



ICQ: презираю 

Вопросов: 10
Ответов: 20
 Профиль | | #3 Добавлено: 06.03.09 21:27
Не отшлифованный код на NET выглядит примерно так(так же как у Боцмана)
  1.  
  2. Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
  3.         If e.Button = Windows.Forms.MouseButtons.Left Then
  4.             PictureBox1.Height = e.X
  5.             PictureBox1.Width = e.Y
  6.         End If
  7.     End Sub


Ответить

Номер ответа: 4
Автор ответа:
 Aston



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #4 Добавлено: 06.03.09 22:20
Спасиб - решение интересное - спасиб)

Ответить

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



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #5 Добавлено: 06.03.09 22:23
О ребята если знаете, то подскажите как сдесь ещё можно использовать АПИ функцию BitBlt, чтобы картинка не моргала при изменении размеров

Ответить

Номер ответа: 6
Автор ответа:
 Боцман



ICQ: 295725312 

Вопросов: 53
Ответов: 830
 Web-сайт: Rus-Skipper.narod.ru
 Профиль | | #6
Добавлено: 06.03.09 23:13
Васика нет, немогу проверить но мысль такая
Может сделать типа шага если удалилась кордината болше или меньше на 10 от существующего размера тогда
  1.   Image1.Move 0, 0, X, y

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #7 Добавлено: 07.03.09 11:47
Может тада уже лучше strеtchblt использовать?
Или как он там правильно называется.

Ответить

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



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #8 Добавлено: 07.03.09 14:58
Я бы использовал, но не нашёл инфы на неё, и как я понял её можно использовать только к picture, а вот как не понял - чтобы она изменяло размер рисунка.

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #9 Добавлено: 07.03.09 17:43
Ни Stretch ни BitBlt не поможет от мерцания сам по себе, полюбому пикчербокс нужен.

Ответить

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



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #10 Добавлено: 07.03.09 19:25
Да по ходу придётся с мерцанием использовать - так как мне надо на вб6 это реализовать. В ВБ Нет всё красиво и просто.
Нашёл вот ещё примерчик на вб6, но с ним реализовать не получается,не работает при внесении изменений
Функция для изменения размеров картинки.
Добавьте на форму 2 PictureBox и 1 CommandButton.

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
Const SRCCOPY = &HCC0020

Private Sub ImgResize(src As PictureBox, TmpPic As PictureBox, mWidth As Long, mHeight As Long)
src.AutoRedraw = False
TmpPic.AutoRedraw = True
TmpPic.Height = mHeight 'установка размеров невидимого picturebox
TmpPic.Width = mWidth
StretchBlt TmpPic.hdc, 0, 0, mWidth, mHeight, src.hdc, 0, 0, src.Width, src.Height, SRCCOPY
'сохранить временной файл на диске
SavePicture TmpPic.Image, App.Path + "\tempimg.bmp"
'перезагрузить оригинальный picturebox
src.AutoSize = True
src.Picture = LoadPicture(App.Path + "\tempimg.bmp";)
'удалить временной файл
Kill App.Path + "\tempimg.bmp"
'очистить невидимый picturebox
TmpPic.Picture = LoadPicture()
'пример для вызова функции
'ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
End Sub

Private Sub Command1_Click()
ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
End Sub

Private Sub Form_Load()
Picture2.Visible = False
End Sub
переделал и работает конешно ух - такое с картинкой творит что пипец
  1. Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc 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 nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long
  2. Const SRCCOPY = &HCC0020
  3.  
  4. Private Sub ImgResize(src As PictureBox, TmpPic As PictureBox, mWidth As Long, mHeight As Long)
  5. src.AutoRedraw = False
  6. TmpPic.AutoRedraw = True
  7. TmpPic.Height = mHeight 'óñòàíîâêà ðàçìåðîâ íåâèäèìîãî picturebox
  8. TmpPic.Width = mWidth
  9. StretchBlt TmpPic.hdc, 0, 0, mWidth, mHeight, src.hdc, 0, 0, src.Width, src.Height, SRCCOPY
  10. 'ñîõðàíèòü âðåìåííîé ôàéë íà äèñêå
  11. SavePicture TmpPic.Image, App.Path + "\tempimg.bmp"
  12. 'ïåðåçàãðóçèòü îðèãèíàëüíûé picturebox
  13. src.AutoSize = True
  14. src.Picture = LoadPicture(App.Path + "\tempimg.bmp")
  15. 'óäàëèòü âðåìåííîé ôàéë
  16. Kill App.Path + "\tempimg.bmp"
  17. 'î÷èñòèòü íåâèäèìûé picturebox
  18. TmpPic.Picture = LoadPicture()
  19. 'ïðèìåð äëÿ âûçîâà ôóíêöèè
  20. 'ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
  21. End Sub
  22.  
  23. Private Sub Command1_Click()
  24. 'ImgResize Picture1, Picture2, Picture1.Width / 2, Picture1.Height / 2
  25. MsgBox "n" & Picture1.Height & " " & Form1.Height
  26. End Sub
  27.  
  28. Private Sub Form_Load()
  29. Picture2.Visible = False
  30. End Sub
  31.  
  32. Private Sub Form_Resize()
  33. ImgResize Picture1, Picture2, Picture1.Width, Form1.Height
  34. End Sub

Ответить

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



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #11 Добавлено: 07.03.09 19:46
Может я чето не понял, но нафиг тебе самому ресайзить рисунок в имедже?
Достаточно его свойство Stretch поставить True.

Ответить

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



ICQ: 214-179-991 

Вопросов: 42
Ответов: 272
 Профиль | | #12 Добавлено: 07.03.09 22:28
Смит это на ВБ6 надо. Имедж - стретч работает - но при изменении размеры блики вылазиют - не красиво, но на ВБ6 видно это так просто не решить, на ВБ Нет всё легко даже АПИ использовать не надо, но мне надо было сделать на вб6, я сделал так с бликами - во время изменения бликает, но потом всё нормально -мелоч конешно но хотел избавится. Если потом на ВБ нэт буду писать то будет всё красиво.

Ответить

Номер ответа: 13
Автор ответа:
 Ra$cal



ICQ: 8068014 

Вопросов: 18
Ответов: 817
 Web-сайт: www.rascalspb.narod.ru
 Профиль | | #13
Добавлено: 07.03.09 23:02
когда же гуглом научатся пользоваться.
http://lmgtfy.com/?q=BitBlt+%D0%BC%D0%B5%D1%80%D1%86%D0%B0%D0%BD%D0%B8%D0%B5

получаем подробное описание потенциальных причин мерцания и способы их избежания. нада бы добавить теги в топики, а при клике на теге открывается гугл с поиском. более чем уверен - половина топиков умирала бы после создания.

http://deadbeef.narod.ru/work/articles/flicker.htm

Ответить

Страница: 1 |

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



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