Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Заблокирован
1

Перевести код с VB6, рисующий капли дождя

28.08.2015, 21:29. Показов 1675. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Прошу помощи.
Посмотрел: Картинки с фрагментом кода - подключайтесь! http://arbuz.uz/x_galerea1.html
Взял на пробу самый верхний скрин "капля", в сиренево-розовых тонах. Смотрите ниже.

Пользуюсь VSС-2013. Как исправить ошибки кода VВ? Чего не хватает?
VB.NET
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
Public Class Form1
   Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
 
    Private Sub Комманда1_Click()
        Cls()
        pi = 4 * Atn(1)
        DrawWidth = 2 : n = 30
        For j = 1 To n
            x = Rnd * 500 + 150 : y = Rnd * 300 + 20
            r1 = 9 * (n - j) + 10 : kaplya()
        Next j
    End Sub
    Private Sub kaplya()
        For i = 0 To pi / 2 Step 0.001
            r = r1 * Sin(i) ^ 3
 Line (r * Cos(i) + x - i * 70, r * Sin(i) + y)-(-r * Cos(-i) _
 + x - i * 70, -r * Sin(-i) + y), _
 RGB(Abs(r), _
 Abs(255 - i * 220), _
 Abs(255 - i * 320))
        Next i
    End Sub
    Private Sub Комманда2_Click()
        End
    End Sub
 
End Class
Сам VSС-2013 насчитал 11 ошибок! Как быть?
Кликните здесь для просмотра всего текста

Ошибка 1 "Cls" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 5 9 WindowsApplication1
Ошибка 2 Нет объявления для: "Atn". Эта функция под именем "Atan" перенесена в класс System.Math. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 6 18 WindowsApplication1
Ошибка 3 "DrawWidth" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 7 9 WindowsApplication1
Ошибка 4 "n" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 7 25 WindowsApplication1
Ошибка 5 "n" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 8 22 WindowsApplication1
Ошибка 6 "n" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 10 23 WindowsApplication1
Ошибка 7 "Sin" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 15 22 WindowsApplication1
Ошибка 8 Операторы "Line" больше не поддерживаются. Функции файлового ввода-вывода доступны в "Microsoft.VisualBasic.FileSystem.LineInput", а функции для работы с графикой — в "System.Drawing.Graphics.DrawLine". C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 16 2 WindowsApplication1
Ошибка 8 Операторы "Line" больше не поддерживаются. Функции файлового ввода-вывода доступны в "Microsoft.VisualBasic.FileSystem.LineInput", а функции для работы с графикой — в "System.Drawing.Graphics.DrawLine". C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 16 2 WindowsApplication1
Ошибка 9 "Cos" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 16 12 WindowsApplication1
Ошибка 10 "Sin" не объявлен. Может быть недоступен из-за своего уровня защиты. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 16 37 WindowsApplication1
Ошибка 11 Требуется завершение оператора. C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\Form1.vb 16 48 WindowsApplication1
Миниатюры
Перевести код с VB6, рисующий капли дождя   Перевести код с VB6, рисующий капли дождя  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2015, 21:29
Ответы с готовыми решениями:

Как правильно перевести код с VB6, рисующий разноцветную спираль
Здравствуйте! Прошу помощи. Не знаю, как правильно перевести код с VB6, рисующий разноцветную...

Капли дождя
Здравствуйте!!! Помогите пожалуйста сделать на консольном окне капли дождя(то есть как льет дождь)....

Получить изображение падающей капли дождя
Получить изображение падающей капли дождя.

С какой скоростью падают капли дождя?
Дождь оставляет полосы на окнах под углом 31 градус к вертикали. С какой скоростью падают капли...

11
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
28.08.2015, 22:29 2
Видимо потому, что код написан для Visual Basic 6. В VB.NET чуть другие названия функций, о чем Вам явно пишет отладчик, если конечно потрудится почитать скрин.
Да и переносы строк кода там делаются иначе.
1
Заблокирован
28.08.2015, 23:00  [ТС] 3
Dragokas, спасибо за внимание. Ожидал более содержательный ответ.

Сам пытался исправлять ошибки за счёт подсказок VSС-2013. Кажется, даже уверен — зашёл в тупик. Помогите, пожалуйста, кто чем может. Это моя первая задача на Visual Basic.

Все ошибки "исправили", совместно с VSС-2013 — так.
VB.NET
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
49
50
51
52
53
54
55
56
57
Public Class Form1
   Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
    Dim DrawWidth As Integer
 
    Private Property n As Integer
 
    Private Sub Комманда1_Click()
        Cls()
        pi = 4 * Math.Atan(1)
        DrawWidth = 2 : n = 30
        For j = 1 To n
            x = Rnd * 500 + 150 : y = Rnd * 300 + 20
            r1 = 9 * (n - j) + 10 : kaplya()
        Next j
    End Sub
    Private Sub kaplya()
        For i = 0 To pi / 2 Step 0.001
            r = r1 * Sin(i) ^ 3
            LineInput(r * Cos(i) + x - i * 70,
            r * Sin(i) + y - (-r) * Cos(-i) + x - i * 70, -r * Sin(-i) + y, _
            RGB(Abs(r), Abs(255 - i * 220), Abs(255 - i * 320)))
 
        Next i
    End Sub
    Private Sub Комманда2_Click()
        End
    End Sub
 
    Private Sub Cls()
        Throw New NotImplementedException
    End Sub
 
    Private Function Sin(i As Double) As Integer
        Throw New NotImplementedException
    End Function
 
    Private Function Cos(i As Double) As Integer
        Throw New NotImplementedException
    End Function
 
    Private Function LineInput(p1 As Double, p2 As Single) As Integer
        Throw New NotImplementedException
    End Function
 
    Private Function LineInput(p1 As Double, p2 As Double, p3 As Single) As Integer
        Throw New NotImplementedException
    End Function
 
    Private Function Abs(r As Integer) As Integer
        Throw New NotImplementedException
    End Function
 
    Private Function LineInput(p1 As Double, p2 As Double, p3 As Single, p4 As Integer) As Integer
        Throw New NotImplementedException
    End Function
 
End Class
Поток 0x570 завершился с кодом 259 (0x103).
"WindowsApplication1.vshost.exe" (CLR v4.0.30319: WindowsApplication1.vshost.exe). Загружено "C:\Users\admin\documents\visual studio 2013\Projects\WindowsApplication1\WindowsApplication1\bin\Debug\WindowsApplicati on1.exe". Символы загружены.
"WindowsApplication1.vshost.exe" (CLR v4.0.30319: WindowsApplication1.vshost.exe). Загружено "C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0 __b77a5c561934e089\System.Runtime.Remoting.dll". Невозможно найти или открыть PDB-файл.
Поток 0x9d4 завершился с кодом 259 (0x103).
Поток 0x16cc завершился с кодом 259 (0x103).
Программа "[4648] WindowsApplication1.vshost.exe" завершилась с кодом 0 (0x0).
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
28.08.2015, 23:55 4
С учетом того, что я не рисую и VB.NET не изучаю вряд ли Вы такой ответ от меня получите.
Скажу перенести тему в родной раздел. Там и подскажут.
1
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
29.08.2015, 01:36 5
Лучший ответ Сообщение было отмечено Willi2001 как решение

Решение

Willi2001, как-то жутко это всё выглядит. Я имею ввиду расчетные формулы.
Вот такой вариант. Тоже жутковат, т.к. основан на оригинале:
VB.NET
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
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Size = New Size(700, 500)
    End Sub
 
    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
 
        pi = 4 * Math.Atan(1)
 
        Dim DrawWidth As Integer = 2
        Dim n As Integer = 30
 
        For j = 1 To n
            x = Rnd() * 500 + 150
            y = Rnd() * 300 + 20
            r1 = 9 * (n - j) + 10
 
            Dim p As New Pen(Color.White, 1)
 
            For i = 0 To pi / 2 Step 0.001
                r = r1 * Math.Sin(i) ^ 3
                p.Color = Color.FromArgb(Math.Min(Math.Abs(r), 255), _
                                         Math.Min(Math.Abs(255 - i * 220), 255), _
                                         Math.Min(Math.Abs(255 - i * 320), 255))
                e.Graphics.DrawLine(p, _
                                    New Point(r * Math.Cos(i) + x - i * 70, r * Math.Sin(i) + y), _
                                    New Point(-r * Math.Cos(-i) + x - i * 70, -r * Math.Sin(-i) + y))
 
            Next i
        Next j
    End Sub
 
End Class
0
Заблокирован
29.08.2015, 02:17  [ТС] 6
Petr_S, спасибо. Всё отлично получилось! Ур-ра-а!

Сейчас попробую отредактировать самостоятельно другой этюд " kap3.jpg ", самый нижний http://arbuz.uz/x_galerea1.html
Миниатюры
Перевести код с VB6, рисующий капли дождя  
0
Заблокирован
29.08.2015, 13:29  [ТС] 7
Цитата Сообщение от Willi2001 Посмотреть сообщение
Сейчас попробую отредактировать самостоятельно другой...
Помогите, пожалуйста. Пытался по аналогии, ничего не получается с "kap3.jpg", самый нижний http://arbuz.uz/x_galerea1.html
VB.NET
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
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Size = New Size(600, 400)
    End Sub
 
    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
 
        pi = 4 * Math.Atan(1)
 
        Dim DrawWidth As Integer = 2
 
        x = 450 : y = 250
        r1 = 1 : kaplya()
 
        Dim p As New Pen(Color.White, 1)
    
        For i = 10 To pi * 58 Step 0.0007
            r = r1 + i * 1.2 + 0.37 * i * Math.Sin(i * i) ^ 5
 
            p.Color = Color.FromArgb(Math.Min(Math.Abs(r), 256 * Math.Sin(r / 15)), _
                                    Math.Min(Math.Abs(255 - Math.Sin(i * 17) * 256), _
                                    Math.Min(Math.Abs(255 - i * r * 0.005))))
 
 
            e.Graphics.DrawLine(p, _
                                New Point(r * Math.Cos(i) + x - i * 0.95, r * Math.Sin(i) + y), _
                                New Point(-r * Math.Cos(-i) + x - i * 0.95, -r * Math.Sin(-i) + y))
 
        Next i
 
    End Sub
 
    Private Sub kaplya()
        Throw New NotImplementedException
    End Sub
 
End Class
Миниатюры
Перевести код с VB6, рисующий капли дождя   Перевести код с VB6, рисующий капли дождя  
0
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
29.08.2015, 22:49 8
Лучший ответ Сообщение было отмечено Willi2001 как решение

Решение

Что-то у меня это туннель вообще не получается.

VB.NET
1
2
3
Color.FromArgb(Math.Min(Math.Abs(256 * Math.Sin(r / 15)), 255), _
                                                       Math.Min(Math.Abs(255 - Math.Sin(i * 17) * 256), 255), _
                                                       Math.Min(Math.Abs(255 - i * r * 0.005), 255))
0
Заблокирован
30.08.2015, 06:56  [ТС] 9
Цитата Сообщение от Petr_S Посмотреть сообщение
Что-то у меня это туннель вообще не получается.
Petr_S, спасибо огромное! В любом случае прогресс получился, первый шаг сделали удачно!
Пока маленькая заминка, результаты ниже.
Ладно. Возможно, автор картинок Скляревский что-то не договаривает, утаивает свой секрет.
VB.NET
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
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Size = New Size(600, 400)
    End Sub
 
    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
 
        pi = 4 * Math.Atan(1)
 
        Dim DrawWidth As Integer = 2
 
        x = 450 : y = 250
        r1 = 1 : kaplya()
 
 
        Dim p As New Pen(Color.White, 1)
 
        For i = 10 To pi * 58 Step 0.0007
            r = r1 + i * 1.2 + 0.37 * i * Math.Sin(i * i) ^ 5
 
            Color.FromArgb(Math.Min(Math.Abs(256 * Math.Sin(r / 15)), 255), _
                                                        Math.Min(Math.Abs(255 - Math.Sin(i * 17) * 256), 255), _
                                                        Math.Min(Math.Abs(255 - i * r * 0.005), 255))
 
 
            e.Graphics.DrawLine(p, _
                                New Point(r * Math.Cos(i) + x - i * 0.95, r * Math.Sin(i) + y), _
                                New Point(-r * Math.Cos(-i) + x - i * 0.95, -r * Math.Sin(-i) + y))
 
        Next i
 
    End Sub
 
    Private Sub kaplya()
        Throw New NotImplementedException
    End Sub
 
End Class
Миниатюры
Перевести код с VB6, рисующий капли дождя  
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
30.08.2015, 08:59 10
Willi2001, Ты не реализовал метод капля, вместо этого ты вызываешь ошибку
0
Заблокирован
30.08.2015, 09:45  [ТС] 11
Цитата Сообщение от edward_freedom Посмотреть сообщение
Willi2001, Ты не реализовал метод капля, вместо этого ты вызываешь ошибку
Спасибо. Если бы знал, что надо делать, то не обращался на форум.

Petr_S, посмотрите, пожалуйста. Осталось подправить детали.
Пытаюсь создать более простую картинку "kap2.jpg", третья сверху http://arbuz.uz/x_galerea1.html
VB.NET
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
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Size = New Size(700, 500)
    End Sub
 
    Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        Dim r1 As Integer, r As Integer, pi As Single, x As Single, y As Single
 
        pi = 4 * Math.Atan(1)
 
        Dim DrawWidth As Integer = 2
        Dim n As Integer = 10
 
        x = 550 : y = 220
        r1 = 1
 
 
        Dim p As New Pen(Color.White, 1)
 
        For i = -pi To pi * 50 Step 0.0015
            r = r1 + i * 2.5 + 0.1 * i * Math.Cos(55 * i) ^ 6
 
            p.Color = Color.FromArgb(Math.Min((Math.Abs(r)), 255), _
                                                        Math.Min(Math.Abs(255 - Math.Cos(i / 2) * 420), 255), _
                                                        Math.Min(Math.Abs(Math.Cos(i * 4) * 250), 255))
 
 
            e.Graphics.DrawLine(p,
                                New Point(r * Math.Cos(i) + x - i * 1, r * Math.Sin(i) + y), _
                                New Point(-r * Math.Cos(-i) + x - i * 0.95, -r * Math.Sin(-i) + y))
 
        Next i
 
    End Sub
 
End Class
Миниатюры
Перевести код с VB6, рисующий капли дождя   Перевести код с VB6, рисующий капли дождя  
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
30.08.2015, 14:20 12
Willi2001, На каждую задачу нужно создать отдельную тему и правильно ее оформить.
В этой теме обсуждение закрыто
0
30.08.2015, 14:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2015, 14:20
Помогаю со студенческими работами здесь

Получить изображение падающей капли дождя
( с помощью использования библиотеки модуля GRAPH)

Перевести код из VB6
Здравствуйте. Переведите пожалуйста код на vb .net Option Explicit Private Sub Form_Click() ...

Перевести код с VB6 на VB .NET
Dim dig_cyr() Dim dig_cyr_4, dig_10 Private Sub Form_Load() ReDim dig_cyr(1 To 3, 0 To 9) ...

Перевести код из VB6 в VB 2010
Я написал приложение на VB6, но нынешние тенденции заставляют переделывать ее под новые условия,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru