Страница: 1 |
Страница: 1 |
Вопрос: Изменения размера Image
Добавлено: 06.03.09 20:08
Автор вопроса: Aston | ICQ: 214-179-991
Привет всем.
Ребята такой вопросик, как сделать имаже, чтобы размер компонента можно было менять в запущеном проекте - как изменение размеров формы - мышкой?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #1
Добавлено: 06.03.09 20:48
Привет тебе тоже.
Ты смотри на возможности компонента при различных действиях, это наведет тебя на мысли как его использовать.
Смотреть нужно в скобках например как здесь Private Sub Image1_MouseMove()
Номер ответа: 2
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #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 выглядит примерно так(так же как у Боцмана)
Номер ответа: 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-сайт:
Профиль | | #6
Добавлено: 06.03.09 23:13
Васика нет, немогу проверить но мысль такая
Может сделать типа шага если удалилась кордината болше или меньше на 10 от существующего размера тогда
Номер ответа: 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
переделал и работает конешно ух - такое с картинкой творит что пипец
Номер ответа: 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-сайт:
Профиль | | #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