powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание объекта shape программно
25 сообщений из 181, страница 7 из 8
Создание объекта shape программно
    #38868627
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сижу у себя в квартире. Ты сидишь у себя в квартире. Это разные квартиры. Но ты почему-то упорно продолжаешь считать, что я могу смотреть твой телевизор.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38868665
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

Я все прекрасно понимаю, но не знаю как объявить в процедуре.
Не буду вас раздражать и лучше реально почитаю для начала а потом просто вернусь к этому.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869085
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все-таки хочу посмотреть будет ли эффект
Не могу понять почему вылазит ошибка, я же объявил в процедуре переменную так, как нужно вроде.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Podstava()
Dim check As ShaperType
  Shape1.FillStyle = check.Sh.FillStyle
  Shape1.FillColor = check.Sh.FillColor
  Shape1.Height = check.Sh.Height
  Shape1.Width = check.Sh.Width
End Sub
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869121
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объявил. А что в ней лежит? От чего ты хочешь получить FillStyle?
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869148
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProОбъявил. А что в ней лежит? От чего ты хочешь получить FillStyle?
В ней лежит созданный нами круг, от которого и хочу получить эти св-ва
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869179
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronВ ней лежит созданный нами круг, от которого и хочу получить эти св-вакак он туда попал? Ты только что объявил эту переменную. Она девственно чиста.

Ты продолжаешь считать, что я могу смотреть твой телевизор.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869200
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProОна девственно чиста.
Значит нужно передавать процедуре параметр.
Ну подскажите уже, обещаю прочитать то, что советовали)
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869206
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитать (и понять) уже сделанный к данному моменту код.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869213
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProПочитать (и понять) уже сделанный к данному моменту код.

Вы очень строгий учитель
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869228
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.ProПочитать (и понять) уже сделанный к данному моменту код.

Вы очень строгий учительИ терпеливый. Я бы просто дал эту методичку http://www.studfiles.ru/dir/cat32/subj1259/file11577.html и закрыл тему.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869241
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyИ терпеливый.
Никто не спорит, я уже давно это отметил)
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869567
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПочитать (и понять) уже сделанный к данному моменту код.вот твой код
Код: vbnet
1.
2.
Private Function One_step(ByRef mama As ShaperType) As Boolean
...


Что будет, если убрать параметр и объявить его как переменную? И почему?
Код: vbnet
1.
2.
3.
Private Function One_step() As Boolean
Dim mama As ShaperType
...
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869593
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProЧто будет, если убрать параметр и объявить его как переменную? И почему?

Я считаю что раз мы не передаем параметр, и объявляем как переменную, то будем работать с пустым контейнером. Постоянно с одним и тем же кругом.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869606
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronПостоянно с одним и тем же кругом.блин, ну почему? Откуда там возьмется круг?
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869609
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proблин, ну почему? Откуда там возьмется круг?
Хотя да((( Просто тупо пустой контейнер
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869614
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот, посмотри примерчик. там что-то полезное для себя почерпнёшь.

зы
делал очень давно
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869615
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameronShocker.Proблин, ну почему? Откуда там возьмется круг?
Хотя да((( Просто тупо пустой контейнерХорошо, почему совершенно аналогичная ситуация с процедурой Podstava вызывает у тебя проблему?
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869649
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProХорошо, почему совершенно аналогичная ситуация с процедурой Podstava вызывает у тебя проблему?

Не знаю, ловлю ступор и хоть ты тресни!! Вот сейчас показал что ей передается.
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub Podstava(ByRef check As ShaperType)
  Shape1.FillStyle = check.Sh.FillStyle
  Shape1.FillColor = check.Sh.FillColor
  Shape1.Height = check.Sh.Height
  Shape1.Width = check.Sh.Width
End Sub


а как при вызове процедуры правильно указать снова ступор!
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38869712
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подумай то том, откуда ты хочешь это передать, что именно хочешь передать и где это хранится на момент возникновения желания передать
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870043
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proподумай то том, откуда ты хочешь это передать, что именно хочешь передать и где это хранится на момент возникновения желания передать

Ну в голове у меня так, не знаю правильно или нет:- передавать хочу тогда, когда вызывается Podstava.
Хочу передать имеющийся на данный момент заполненный контейнер и работать с кругом в нем. Этот контейнер есть в двух местах. 1) в addshapes 2) One_step Но как передать - СТУПОР! Не знаю что со мной.
Скажу вам честно, я схитрил, понимаю что это неправильно, что это разово и потом я все-равно упрусь в то, чего никак не могу понять. И поэтому если у вас еще есть желание дотолдычить это))
Короче вот. Эффекта ноль. Мерцание идет, а когда шаров больше становится вообще ужасно
Пробовал по-разному.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Private Function One_step(ByRef mama As ShaperType) As Boolean
Randomize
With mama.Sh
                           .Visible = False
                       Shape1.FillStyle = .FillStyle
                       Shape1.FillColor = .FillColor
                       Shape1.Shape = .Shape
                       Shape1.Height = .Height
                       Shape1.Width = .Width
                       Shape1.Left = .Left + mama.StepX
                       Shape1.Top = .Top + mama.StepY
                       Shape1.Visible = True
    
    .Left = .Left + mama.StepX
    .Top = .Top + mama.StepY
                       
                       Shape1.Visible = False
                      .Visible = True

If .Left >= Form1.Width - .Width Then
       One_step = True
       mama.StepX = -150 * Rnd
    Else
       One_step = False
    End If
    If .Left <= 0 Then
       mama.StepX = 150 * Rnd
    End If
    If .Top >= Form1.Height - .Width Then mama.StepY = -200 * Rnd
    If .Top <= 0 Then mama.StepY = 200 * Rnd
End With
End Function

Private Sub addshape()
Randomize
Dim check As ShaperType
  Set check.Sh = Me.Controls.Add("VB.Shape", "sh" & UBound(colShapes) + 1)
  check.Sh.Visible = 1
  check.Sh.Shape = 3
  check.Sh.FillStyle = vbSolid
  check.Sh.FillColor = 16777216 * Rnd
  check.Sh.Height = 1000 + 1000 * Rnd
  check.Sh.Width = 1000 + 1000 * Rnd
  check.StepX = 100 * Rnd
  check.StepY = 100 * Rnd
  ReDim Preserve colShapes(UBound(colShapes) + 1)
  colShapes(UBound(colShapes)) = check
End Sub
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870190
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vdekameron,

немного помогает поменять местами переключение видимости
Код: vbnet
1.
2.
                       Shape1.Visible = True
                           .Visible = False

Код: vbnet
1.
2.
                      .Visible = True
                       Shape1.Visible = False


от "дерготни" мы избавились, а от мерцания - нет, для закрашенных кругов перерисовку видно, это уже проблема реализации перерисовки самого элемента shape, там, видимо, двойная буферизация не используется. Так что для улучшения качества придется использовать другие средства - рисовать самому круги с помощью GDI или DirectX
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870197
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proот "дерготни" мы избавились,

Поменял местами, эффекта ноль. Может я придираюсь, но движение какое-то дерганое , колеблющее. Режет глаз.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Private Function One_step(ByRef mama As ShaperType) As Boolean
Randomize
With mama.Sh
                        
                       Shape1.Visible = True
                       Shape1.FillStyle = .FillStyle
                       Shape1.FillColor = .FillColor
                       Shape1.Shape = .Shape
                       Shape1.Height = .Height
                       Shape1.Width = .Width
                       Shape1.Left = .Left + mama.StepX
                       Shape1.Top = .Top + mama.StepY
                       .Visible = False
    
    .Left = .Left + mama.StepX
    .Top = .Top + mama.StepY
                       
                       .Visible = True
                       Shape1.Visible = False
                      
If .Left >= Form1.Width - .Width Then
       One_step = True
       mama.StepX = -150 * Rnd
    Else
       One_step = False
    End If
    If .Left <= 0 Then
       mama.StepX = 150 * Rnd
    End If
    If .Top >= Form1.Height - .Width Then mama.StepY = -200 * Rnd
    If .Top <= 0 Then mama.StepY = 200 * Rnd
End With
End Function
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870206
vdekameron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Proа от мерцания - нет, для закрашенных кругов перерисовку видно
Мерцания появляются даже без закраски кругов.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, хоть и не так заметно.

В общем, внутри шейп устроен так, что при самообновлении он сначала стирает себя полностью, потом рисует заново - от этого мерцание. Это внутреннее устройство шейпа, да и вообще, видимо, любого стандартного контрола VB - они же не предназначены для анимации.
...
Рейтинг: 0 / 0
Создание объекта shape программно
    #38870278
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если рисовать в контексте устройства, то лучше юзать API. там есть специализиврованные ф-ии обновления окна типа invalidaterect и тп
...
Рейтинг: 0 / 0
25 сообщений из 181, страница 7 из 8
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Создание объекта shape программно
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]