Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [VB6]рисую солнышко, не рисуется((( 
:(
    Опции темы
brunetka
Дата 21.9.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



Всем привееет... smile ...
я вот тут пытаюсь нарисовать солнышко...написала процедуру...а она не яботает smile ...не мог бы кто-нибуть умудренный жизненным опытом в этом плане подсказать что не так...вот тут...

Код

Private Sub Painting()
Dim red(20) As Byte, green(20) As Byte, blue(20) As Byte
For zi = 0 To 20
 red(zi) = Round(Rnd * (254))
 green(zi) = Round(Rnd * (254))
 blue(zi) = Round(Rnd * (254))
 Next zi
 x = 2500
 y = 2500
  If dlr < 100 Then
  If ugr = 360 Then
     dlr = dlr + 5: ugr = -10
  End If
  ugr = ugr + 10
  i = Int((15 - 3) * Rnd + 4)
x = x + (dlr * Cos(ugr * 3.14 / 180))
y = y + (dlr * Sin(ugr * 3.14 / 180))
  Form1.FillStyle = 0
  Form1.FillColor = RGB(red(i), green(i), blue(i))
Circle (x, y), 1.5, i
End If
End Sub


заранее спс smile 
PM MAIL   Вверх
Akina
Дата 21.9.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 17
Всего: 454



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
brunetka
Дата 22.9.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



Спасибо за помощь...
я тут подработала...теперь все работает как надо кроме того что кружки в солнышке должны по таймеру рисоваться...по однуму кружочку...а у меня все сразу выскакивают... smile ...что я не так написала?

Код

Private Sub Timer1_Timer()
Timer1.Interval = 100
 For dlr = 300 To 1800
   If ugr = 360 Then
     dlr = dlr + 60
     k = k + 1
     ugr = 0
  End If
  ugr = ugr + 10
  x = 1700 - (dlr * Cos(ugr * 3.14159 / 180))
  y = 1700 + (dlr * Sin(ugr * 3.14159 / 180))
  Form1.FillStyle = 0
If (k = 0) Or (k = 4) Or (k = 8) Or (k = 12) Then
  Form1.FillColor = RGB(255, 255, 0)
End If
If (k = 1) Or (k = 5) Or (k = 9) Or (k = 13) Then
  Form1.FillColor = RGB(0, 255, 0)
End If
If (k = 2) Or (k = 6) Or (k = 10) Or (k = 14) Then
  Form1.FillColor = RGB(255, 0, 0)
End If
If (k = 3) Or (k = 7) Or (k = 11) Or (k = 15) Then
  Form1.FillColor = RGB(0, 255, 255)
End If
Circle (x, y), 50, 0
Next
Timer1.Enabled = False
End Sub

PM MAIL   Вверх
W4FhLF
Дата 22.9.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



Ой какая красота...  smile 


Цитата(brunetka @  22.9.2007,  17:18 Найти цитируемый пост)
что я не так написала?


Задержку надо в цикле поставить.

Код

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Timer1_Timer()
Timer1.Interval = 100
    For dlr = 300 To 1800
    
        If ugr = 360 Then
            dlr = dlr + 60
            k = k + 1
            ugr = 0
        End If
        
        ugr = ugr + 10
        
        x = 1700 - (dlr * Cos(ugr * 3.14159 / 180))
        y = 1700 + (dlr * Sin(ugr * 3.14159 / 180))
        
        Form1.FillStyle = 0
        
        If (k = 0) Or (k = 4) Or (k = 8) Or (k = 12) Then Form1.FillColor = RGB(255, 255, 0)
        If (k = 1) Or (k = 5) Or (k = 9) Or (k = 13) Then Form1.FillColor = RGB(0, 255, 0)
        If (k = 2) Or (k = 6) Or (k = 10) Or (k = 14) Then Form1.FillColor = RGB(255, 0, 0)
        If (k = 3) Or (k = 7) Or (k = 11) Or (k = 15) Then Form1.FillColor = RGB(0, 255, 255)
        
        Circle (x, y), 50, 0
        
        Call Sleep(3) ' задержка в миллисекундах
    Next
Timer1.Enabled = False
End Sub





--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
SelenIT
Дата 22.9.2007, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 5
Всего: 401



Насколько я понимаю логику таймера, цикл в процедуре вообще не нужен. По таймеру нужно делать одну итерацию, затем инкрементить параметр (в данном случае dlr) и, если его значение не превысило предел, устанавливать таймер на следующую...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
brunetka
Дата 22.9.2007, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



Ух ты............ smile  smile  smile  smile  smile  smile  smile 

W4FhLF, спасибо тебе...нет не так...СПАСИБО ТЕБЕ ОГРОМНОЕ...я уже и не думала что кто-нить с этим солнцем мине помагет))))очень-очень тебе спасиба... smile 
ток вот у меня теперь тута непонятка случается...у меня в проге кроме солнца еще телега едет и на ней в конце надпись появляется "зачет!"...дело в том что после вставки задержки у меня начало сначала солнышко рисоваться, а потом надпись появляться...а до этого (и мне так надо) у меня сначала надпись появлялась, а потом уже солнце...что вот тута надо бы еще дописать?...подскажите пазаласта...
Код

Private Sub Timer1_Timer()
Dim kx2(7), ky2(7)
stl = stl + 1           
rl = 600
kx2(0) = kx2o(0) - (rl - rl * Cos(stl / 180 * 3.14159 - 3.14 / 2)) + rl
ky2(0) = ky2o(0) + rl * Sin(stl / 180 * 3.14159 - 3.14 / 2) + rl
kx2(1) = kx2o(1) - (rl - rl * Cos(stl / 180 * 3.14159 + 3.14 / 2)) + rl
ky2(1) = ky2o(1) + rl * Sin(stl / 180 * 3.14159 + 3.14 / 2) - rl
kx2(2) = kx2o(2) - (rl - rl * Cos(stl / 180 * 3.14159 - 3.14 / 2)) + rl
ky2(2) = ky2o(2) + rl * Sin(stl / 180 * 3.14159 - 3.14 / 2) + rl
kx2(3) = kx2o(3) - (rl - rl * Cos(stl / 180 * 3.14159 + 3.14 / 2)) + rl
ky2(3) = ky2o(3) + rl * Sin(stl / 180 * 3.14159 + 3.14 / 2) - rl
kx2(4) = kx2o(4) - (rl - rl * Cos(stl / 180 * 3.14159))
ky2(4) = ky2o(4) + rl * Sin(stl / 180 * 3.14159)
kx2(5) = kx2o(5) - (rl - rl * Cos(stl / 180 * 3.14159 + 3.14)) + 2 * rl
ky2(5) = ky2o(5) + rl * Sin(stl / 180 * 3.14159 + 3.14)
kx2(6) = kx2o(6) - (rl - rl * Cos(stl / 180 * 3.14159))
ky2(6) = ky2o(6) + rl * Sin(stl / 180 * 3.14159)
kx2(7) = kx2o(7) - (rl - rl * Cos(stl / 180 * 3.14159 + 3.14)) + 2 * rl
ky2(7) = ky2o(7) + rl * Sin(stl / 180 * 3.14159 + 3.14)
Shape1.Left = Shape1.Left + 10
Shape2.Left = Shape2.Left + 10
Shape3.Left = Shape3.Left + 10
 For i = 0 To 7
 Line1(i).X2 = kx2(i) + 10
 Line1(i).X1 = Line1(i).X1 + 10
 Line1(i).Y2 = ky2(i)
 kx2o(i) = kx2o(i) + 10
Next i
If Shape3.Left + Shape3.Width + 105 = Form1.Width Then
Picture1.Visible = True
 For dlr = 300 To 1800
   If ugr = 360 Then
     dlr = dlr + 60
     k = k + 1
     ugr = 0
  End If
  ugr = ugr + 10
  x = 1700 - (dlr * Cos(ugr * 3.14159 / 180))
  y = 1700 + (dlr * Sin(ugr * 3.14159 / 180))
  Form1.FillStyle = 0
If (k = 0) Or (k = 4) Or (k = 8) Or (k = 12) Then
  Form1.FillColor = RGB(255, 255, 0)
End If
If (k = 1) Or (k = 5) Or (k = 9) Or (k = 13) Then
  Form1.FillColor = RGB(0, 255, 0)
End If
If (k = 2) Or (k = 6) Or (k = 10) Or (k = 14) Then
  Form1.FillColor = RGB(255, 0, 0)
End If
If (k = 3) Or (k = 7) Or (k = 11) Or (k = 15) Then
  Form1.FillColor = RGB(0, 255, 255)
End If
Circle (x, y), 50, 0
Call Sleep(10) 
Next
Timer1.Enabled = False
End If
End Sub

PM MAIL   Вверх
W4FhLF
Дата 23.9.2007, 06:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



brunetka, тележку и надпись сделай в другом таймере. Т.е. добавь ещё один таймер на форум и код, который отвечает за езду тележки и надпись перенеси туда. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
brunetka
Дата 23.9.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



W4FhLF, еще раз огромное тебе спасибо...теперь все у меня чики-пуки... smile 
PM MAIL   Вверх
brunetka
Дата 23.9.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 13.9.2007

Репутация: нет
Всего: нет



W4FhLF, а можно вопрос...вот эта строчка...
Код

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

она как объясняется? smile ...просто из знакомо-понятных мне в ней слов 4 из 10 smile ...
PM MAIL   Вверх
cardinal
Дата 23.9.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Цитата(brunetka @  23.9.2007,  13:25 Найти цитируемый пост)
она как объясняется?

Для того, чтобы сделать задержку (паузу) в программе можно использовать пустой цикл, который крутиться опр. кол-во раз (но по времени на каждом компьютере он будет крутиться разное кол-во времени), а можно использовать API функцию Sleep. Она позволяет сделать паузу в опр. кол-во миллисекунд (с погрешностью!). Чтобы воспользоваться этой функцией надо ее объявить. Как это делается написано выше. Еще можно почитать тут:
http://i2r.rusfund.ru/static/375/out_15251.shtml


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0710 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.