Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как плавно увеличить картинку на форме - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как плавно увеличить картинку на форме
Lizard Дата: Понедельник, 10.06.2019, 08:34 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Доброго дня.
Помогите решить вопрос с формой.

Макрос в файле - запускает форму с картинкой.
Как сделать так, чтобы картинка на форме медленно увеличивалась из центра ?
При этом форма должна остаться неизменной.

(То есть картинка будет как бы выезжать за пределы формы.)
К сообщению приложен файл: 2054438.xls (52.5 Kb) · 2764249.rar (41.1 Kb)
 
Ответить
СообщениеДоброго дня.
Помогите решить вопрос с формой.

Макрос в файле - запускает форму с картинкой.
Как сделать так, чтобы картинка на форме медленно увеличивалась из центра ?
При этом форма должна остаться неизменной.

(То есть картинка будет как бы выезжать за пределы формы.)

Автор - Lizard
Дата добавления - 10.06.2019 в 08:34
Fidgy Дата: Понедельник, 10.06.2019, 15:07 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
Само изображение в форме никак, нужно добавить объект Image в форму с параметром PictureSizaMod = 1
Далее в событии UserForm_Activate скалировать объект Image с определённым промежутком времени и на каждом шагу отрисовывать UserForm
К сообщению приложен файл: 2054438_new.xls (54.0 Kb)
 
Ответить
СообщениеСамо изображение в форме никак, нужно добавить объект Image в форму с параметром PictureSizaMod = 1
Далее в событии UserForm_Activate скалировать объект Image с определённым промежутком времени и на каждом шагу отрисовывать UserForm

Автор - Fidgy
Дата добавления - 10.06.2019 в 15:07
Lizard Дата: Вторник, 11.06.2019, 01:35 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Fidgy, что-то не работает.

Я пытаюсь повысить плавность и время увеличения:
[vba]
Код

Private Sub UserForm_Activate()
Dim c As Byte

For c = 1 To 50
UserForm1.Image1.Height = 10 + 20 * c
UserForm1.Image1.Width = 10 + 20 * c
Module1.WaitS 0.3
UserForm1.Repaint
Next
End Sub

[/vba]

Какое-то время рисунок увеличивается, но потом эксель зависает.
Потом еще - рисунок увеличивается не из центра во все стороны, а из левого верхнего угла.
К сообщению приложен файл: 2054438_new2.xls (52.0 Kb)
 
Ответить
СообщениеFidgy, что-то не работает.

Я пытаюсь повысить плавность и время увеличения:
[vba]
Код

Private Sub UserForm_Activate()
Dim c As Byte

For c = 1 To 50
UserForm1.Image1.Height = 10 + 20 * c
UserForm1.Image1.Width = 10 + 20 * c
Module1.WaitS 0.3
UserForm1.Repaint
Next
End Sub

[/vba]

Какое-то время рисунок увеличивается, но потом эксель зависает.
Потом еще - рисунок увеличивается не из центра во все стороны, а из левого верхнего угла.

Автор - Lizard
Дата добавления - 11.06.2019 в 01:35
bmv98rus Дата: Вторник, 11.06.2019, 07:18 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Lizard,
Три параметра. Шаг изменения размера - плавность, период изменения размера - скорость, число повторов- продолжительность. Их надо рассчитывать относительно друг друга, но для плавности, изменение размера должно быть минимальным из возможного Если надо изменить размер от и до за определенное время, то
[vba]
Код
For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
Module1.WaitS 0.1
UserForm1.Repaint
Next
[/vba]
Ну а про увеличение, надо сдвигать девую верхнюю точку на половину увеличения каждый раз, естественно сперва разместив объект по центру.


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 11.06.2019, 14:29
 
Ответить
СообщениеLizard,
Три параметра. Шаг изменения размера - плавность, период изменения размера - скорость, число повторов- продолжительность. Их надо рассчитывать относительно друг друга, но для плавности, изменение размера должно быть минимальным из возможного Если надо изменить размер от и до за определенное время, то
[vba]
Код
For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
Module1.WaitS 0.1
UserForm1.Repaint
Next
[/vba]
Ну а про увеличение, надо сдвигать девую верхнюю точку на половину увеличения каждый раз, естественно сперва разместив объект по центру.

Автор - bmv98rus
Дата добавления - 11.06.2019 в 07:18
Lizard Дата: Вторник, 11.06.2019, 08:36 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, у вас картинка начинает рост из угла - по направлению диагонали вправо-вниз.
Я спрашивал про то - как увеличивать картинку из центра - сразу во всех направлениях.

И потом - у вас рост картинки заканчивается, а он не должен заканчиваться - картинка должна выходить за пределы формы.
 
Ответить
Сообщениеbmv98rus, у вас картинка начинает рост из угла - по направлению диагонали вправо-вниз.
Я спрашивал про то - как увеличивать картинку из центра - сразу во всех направлениях.

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

Автор - Lizard
Дата добавления - 11.06.2019 в 08:36
RAN Дата: Вторник, 11.06.2019, 09:36 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
картинка должна выходить за пределы формы.

У вас картинка - часть формы. Вы можете привести пример, где часть больше целого?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
картинка должна выходить за пределы формы.

У вас картинка - часть формы. Вы можете привести пример, где часть больше целого?

Автор - RAN
Дата добавления - 11.06.2019 в 09:36
anvg Дата: Вторник, 11.06.2019, 10:29 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Доброе время суток.
Вы можете привести пример, где часть больше целого?

Тёзка, не уловил. А что мешает для Image задать размер больший чем размер UserForm? Ну, да видно будет только та часть, что попадает в размеры формы, но сам же объект Image будет больше по размеру. Или я чего-то не понимаю?
 
Ответить
СообщениеДоброе время суток.
Вы можете привести пример, где часть больше целого?

Тёзка, не уловил. А что мешает для Image задать размер больший чем размер UserForm? Ну, да видно будет только та часть, что попадает в размеры формы, но сам же объект Image будет больше по размеру. Или я чего-то не понимаю?

Автор - anvg
Дата добавления - 11.06.2019 в 10:29
Fidgy Дата: Вторник, 11.06.2019, 10:40 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
Lizard, чтобы картинка росла из центра во все направления, то нужно UserForm1.Image1 разместить по центру UserForm1 и менять координаты изображения влево вверх на половину значения увеличения
Примерно так:
[vba]
Код
For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
UserForm1.Image1.Left = 30 - (1 * c)/2
UserForm1.Image1.Top = 30 - (1 * c)/2
Module1.WaitS 0.1
UserForm1.Repaint
Next
[/vba]
 
Ответить
СообщениеLizard, чтобы картинка росла из центра во все направления, то нужно UserForm1.Image1 разместить по центру UserForm1 и менять координаты изображения влево вверх на половину значения увеличения
Примерно так:
[vba]
Код
For c = 1 To 150
UserForm1.Image1.Height = 10 + 1 * c
UserForm1.Image1.Width = 10 + 1 * c
UserForm1.Image1.Left = 30 - (1 * c)/2
UserForm1.Image1.Top = 30 - (1 * c)/2
Module1.WaitS 0.1
UserForm1.Repaint
Next
[/vba]

Автор - Fidgy
Дата добавления - 11.06.2019 в 10:40
Lizard Дата: Вторник, 11.06.2019, 10:54 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Fidgy, да, примерно так.
Но она растет сейчас не из центра формы, а как-то из первой половины формы.

И еще - когда рисунок достигает края формы - он перестает увеличиваться.
Но он должен увеличиваться постоянно, выходя за край формы (то есть не переставая увеличиваться).
 
Ответить
СообщениеFidgy, да, примерно так.
Но она растет сейчас не из центра формы, а как-то из первой половины формы.

И еще - когда рисунок достигает края формы - он перестает увеличиваться.
Но он должен увеличиваться постоянно, выходя за край формы (то есть не переставая увеличиваться).

Автор - Lizard
Дата добавления - 11.06.2019 в 10:54
bmv98rus Дата: Вторник, 11.06.2019, 11:25 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Lizard, Судя по всему, вы не читаете текст а ждете готового решения.
а он не должен заканчиваться
то есть организуем замкнутый цикл до тех пор пока центральный пиксель картинки не станет занимать всю форму, Хотя дальше цикл может продолжаться, но изображение меняться не будет.
Ну поиграйте вы коэффициентами. Уже все есть, почти, осталось сместить начальную картинку по центру формы. Как это делать ? - А как это связано конкретно с этой темой?


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеLizard, Судя по всему, вы не читаете текст а ждете готового решения.
а он не должен заканчиваться
то есть организуем замкнутый цикл до тех пор пока центральный пиксель картинки не станет занимать всю форму, Хотя дальше цикл может продолжаться, но изображение меняться не будет.
Ну поиграйте вы коэффициентами. Уже все есть, почти, осталось сместить начальную картинку по центру формы. Как это делать ? - А как это связано конкретно с этой темой?

Автор - bmv98rus
Дата добавления - 11.06.2019 в 11:25
Lizard Дата: Вторник, 11.06.2019, 11:55 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, я вроде в первом сообщении - написал о том, что рисунку нужно выезжать за пределы формы.
 
Ответить
Сообщениеbmv98rus, я вроде в первом сообщении - написал о том, что рисунку нужно выезжать за пределы формы.

Автор - Lizard
Дата добавления - 11.06.2019 в 11:55
bmv98rus Дата: Вторник, 11.06.2019, 12:33 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
что рисунку нужно выезжать за пределы формы.

до каких пор? Ну в варианте из #2 выезжает но рывками. Я изменил просто параметры и пошло плавно, но надо просто задать больше циклов, ну что тут не понятного?


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
что рисунку нужно выезжать за пределы формы.

до каких пор? Ну в варианте из #2 выезжает но рывками. Я изменил просто параметры и пошло плавно, но надо просто задать больше циклов, ну что тут не понятного?

Автор - bmv98rus
Дата добавления - 11.06.2019 в 12:33
Lizard Дата: Вторник, 11.06.2019, 12:37 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, так а как же это сделать ?

Ну в варианте из #2 выезжает но рывками.

Я не вижу, что выезжает.
Рисунок просто касается границы формы и его рост останавливается - в этот момент.
 
Ответить
Сообщениеbmv98rus, так а как же это сделать ?

Ну в варианте из #2 выезжает но рывками.

Я не вижу, что выезжает.
Рисунок просто касается границы формы и его рост останавливается - в этот момент.

Автор - Lizard
Дата добавления - 11.06.2019 в 12:37
Fidgy Дата: Вторник, 11.06.2019, 13:05 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 11 ±
Замечаний: 0% ±

Excel 2016
Lizard, у меня рисунок успешно выходит за границы

Цитата
Но она растет сейчас не из центра формы, а как-то из первой половины формы.

[vba]
Код
Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 60
    .Image1.Height = H + 10 * c
    .Image1.Width = W + 10 * c
    .Image1.Left = L - (10 * c) / 2
    .Image1.Top = T - (10 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub
[/vba]
 
Ответить
СообщениеLizard, у меня рисунок успешно выходит за границы

Цитата
Но она растет сейчас не из центра формы, а как-то из первой половины формы.

[vba]
Код
Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 60
    .Image1.Height = H + 10 * c
    .Image1.Width = W + 10 * c
    .Image1.Left = L - (10 * c) / 2
    .Image1.Top = T - (10 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub
[/vba]

Автор - Fidgy
Дата добавления - 11.06.2019 в 13:05
Lizard Дата: Вторник, 11.06.2019, 13:54 | Сообщение № 15
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Fidgy, спасибо.
Попытался замедлить увеличение, увеличив число цикла.
Но теперь выдает ошибку Run-time error 429

[vba]
Код

Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 400
    .Image1.Height = H + 0.1 * c
    .Image1.Width = W + 0.1 * c
    .Image1.Left = L - (0.1 * c) / 2
    .Image1.Top = T - (0.1 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub

[/vba]

Как можно исправить эту ошибку ?
К сообщению приложен файл: 1_2.xls (59.0 Kb)
 
Ответить
СообщениеFidgy, спасибо.
Попытался замедлить увеличение, увеличив число цикла.
Но теперь выдает ошибку Run-time error 429

[vba]
Код

Private Sub UserForm_Activate()
Dim c As Byte, H As Single, W As Single, L As Single, T As Single
With UserForm1
H = .Image1.Height
W = .Image1.Width
L = .Image1.Left
T = .Image1.Top

For c = 0 To 400
    .Image1.Height = H + 0.1 * c
    .Image1.Width = W + 0.1 * c
    .Image1.Left = L - (0.1 * c) / 2
    .Image1.Top = T - (0.1 * c) / 2
    Module1.WaitS 0.1
    .Repaint
Next
End With
End Sub

[/vba]

Как можно исправить эту ошибку ?

Автор - Lizard
Дата добавления - 11.06.2019 в 13:54
bmv98rus Дата: Вторник, 11.06.2019, 14:30 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4115
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Три параметра. Шаг изменения размера - плавность, период изменения размера - скорость, число повторов- продолжительность.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
Три параметра. Шаг изменения размера - плавность, период изменения размера - скорость, число повторов- продолжительность.

Автор - bmv98rus
Дата добавления - 11.06.2019 в 14:30
Lizard Дата: Вторник, 11.06.2019, 14:37 | Сообщение № 17
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
bmv98rus, ну так вот я - поставил 400 вместо 200, и перестал макрос работать.
Это как я понял - продолжительность.
 
Ответить
Сообщениеbmv98rus, ну так вот я - поставил 400 вместо 200, и перестал макрос работать.
Это как я понял - продолжительность.

Автор - Lizard
Дата добавления - 11.06.2019 в 14:37
Pelena Дата: Вторник, 11.06.2019, 14:44 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Объявление [vba]
Код
c As Byte
[/vba] означает, что с не может быть больше 256


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеОбъявление [vba]
Код
c As Byte
[/vba] означает, что с не может быть больше 256

Автор - Pelena
Дата добавления - 11.06.2019 в 14:44
Lizard Дата: Вторник, 11.06.2019, 15:38 | Сообщение № 19
Группа: Пользователи
Ранг: Участник
Сообщений: 60
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
А можно как-то еще более плавно увеличивать картинку ?
Потому что сейчас все равно как будто какими-то мелкими рывками она увеличивается.
К сообщению приложен файл: 1_3.xls (59.5 Kb)
 
Ответить
СообщениеА можно как-то еще более плавно увеличивать картинку ?
Потому что сейчас все равно как будто какими-то мелкими рывками она увеличивается.

Автор - Lizard
Дата добавления - 11.06.2019 в 15:38
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!