Макрос в файле - запускает форму с картинкой. Как сделать так, чтобы картинка на форме медленно увеличивалась из центра ? При этом форма должна остаться неизменной.
(То есть картинка будет как бы выезжать за пределы формы.)
Доброго дня. Помогите решить вопрос с формой.
Макрос в файле - запускает форму с картинкой. Как сделать так, чтобы картинка на форме медленно увеличивалась из центра ? При этом форма должна остаться неизменной.
(То есть картинка будет как бы выезжать за пределы формы.)Lizard
Само изображение в форме никак, нужно добавить объект Image в форму с параметром PictureSizaMod = 1 Далее в событии UserForm_Activate скалировать объект Image с определённым промежутком времени и на каждом шагу отрисовывать UserForm
Само изображение в форме никак, нужно добавить объект Image в форму с параметром PictureSizaMod = 1 Далее в событии UserForm_Activate скалировать объект Image с определённым промежутком времени и на каждом шагу отрисовывать UserFormFidgy
Я пытаюсь повысить плавность и время увеличения: [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]
Какое-то время рисунок увеличивается, но потом эксель зависает. Потом еще - рисунок увеличивается не из центра во все стороны, а из левого верхнего угла.
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
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] Ну а про увеличение, надо сдвигать девую верхнюю точку на половину увеличения каждый раз, естественно сперва разместив объект по центру.
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
Замечательный Временно просто медведь , процентов на 20.
Сообщение отредактировал bmv98rus - Вторник, 11.06.2019, 14:29
bmv98rus, у вас картинка начинает рост из угла - по направлению диагонали вправо-вниз. Я спрашивал про то - как увеличивать картинку из центра - сразу во всех направлениях.
И потом - у вас рост картинки заканчивается, а он не должен заканчиваться - картинка должна выходить за пределы формы.
bmv98rus, у вас картинка начинает рост из угла - по направлению диагонали вправо-вниз. Я спрашивал про то - как увеличивать картинку из центра - сразу во всех направлениях.
И потом - у вас рост картинки заканчивается, а он не должен заканчиваться - картинка должна выходить за пределы формы.Lizard
Вы можете привести пример, где часть больше целого?
Тёзка, не уловил. А что мешает для Image задать размер больший чем размер UserForm? Ну, да видно будет только та часть, что попадает в размеры формы, но сам же объект Image будет больше по размеру. Или я чего-то не понимаю?
Вы можете привести пример, где часть больше целого?
Тёзка, не уловил. А что мешает для Image задать размер больший чем размер UserForm? Ну, да видно будет только та часть, что попадает в размеры формы, но сам же объект Image будет больше по размеру. Или я чего-то не понимаю?anvg
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
Fidgy, да, примерно так. Но она растет сейчас не из центра формы, а как-то из первой половины формы.
И еще - когда рисунок достигает края формы - он перестает увеличиваться. Но он должен увеличиваться постоянно, выходя за край формы (то есть не переставая увеличиваться).
Fidgy, да, примерно так. Но она растет сейчас не из центра формы, а как-то из первой половины формы.
И еще - когда рисунок достигает края формы - он перестает увеличиваться. Но он должен увеличиваться постоянно, выходя за край формы (то есть не переставая увеличиваться).Lizard
то есть организуем замкнутый цикл до тех пор пока центральный пиксель картинки не станет занимать всю форму, Хотя дальше цикл может продолжаться, но изображение меняться не будет. Ну поиграйте вы коэффициентами. Уже все есть, почти, осталось сместить начальную картинку по центру формы. Как это делать ? - А как это связано конкретно с этой темой?
Lizard, Судя по всему, вы не читаете текст а ждете готового решения.
то есть организуем замкнутый цикл до тех пор пока центральный пиксель картинки не станет занимать всю форму, Хотя дальше цикл может продолжаться, но изображение меняться не будет. Ну поиграйте вы коэффициентами. Уже все есть, почти, осталось сместить начальную картинку по центру формы. Как это делать ? - А как это связано конкретно с этой темой?bmv98rus
Замечательный Временно просто медведь , процентов на 20.
до каких пор? Ну в варианте из #2 выезжает но рывками. Я изменил просто параметры и пошло плавно, но надо просто задать больше циклов, ну что тут не понятного?
до каких пор? Ну в варианте из #2 выезжает но рывками. Я изменил просто параметры и пошло плавно, но надо просто задать больше циклов, ну что тут не понятного?bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Но она растет сейчас не из центра формы, а как-то из первой половины формы.
[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
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]
Как можно исправить эту ошибку ?
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