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

Пирамида не растягивается по вертикали

01.07.2014, 20:26. Показов 598. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такой код создания пирамиды. Нужно растянуть ее по вертикали, по горизонтали растягивается хорошо, а по вертикали не получается, растягивается с помощью y1 по вертикали, x1 по горизонтали. Помогите кто сможет.
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
58
59
60
61
62
63
64
65
66
67
68
69
Public Class Form1
    Dim p As Integer
    Dim a, x0, y0 As Single
    Dim grad As Double
    Dim  x1, y1, o As Single
 
    Private Function Piramida() As Integer
        Dim g As Graphics = PictureBox1.CreateGraphics()
        Dim pen1 As New System.Drawing.Pen(Color.Black, 2)
        Dim points(7) As Point
        Dim pointss(7) As Point
        Dim i, j As Integer
        Dim m As New Drawing2D.Matrix
        m.RotateAt(grad, New Point(235 + x0, 235 + y0))
        g.Transform = m
        g.Clear(Color.White)
        a = 225
 
        For i = 0 To 6 Step 2
            For j = 0 To 6 Step 2
                pointss(j) = New Point((a - 100 - x1 * 7) + (20 + x1) * j + x0, (a + 40) - 10 * j + y0) 'левая ...
                pointss(j + 1) = New Point((a - 100 - x1 * 7) + (20 + x1) * j + x0, ((a + 20) - 10 * j + y0)) '... лестница
            Next
            points(i) = New Point((a + 180 + x1 * 7) - (20 + x1) * i + x0, (a + 40) - 10 * i + y0) 'правая ...
            points(i + 1) = New Point((a + 180 + x1 * 7) - (20 + x1) * i + x0, (a + 20) - 10 * i + y0) '... лестница
        Next
        g.DrawLines(pen1, points)
        g.DrawLines(pen1, pointss)
        g.DrawLine(pen1, 125 + x0 - x1 * 7, 265 + y0, 405 + x0 + x1 * 7, 265 + y0) 'нижнее основание
        g.DrawLine(pen1, 245 + x0 - x1, 185 + y0, 285 + x0 + x1, 185 + y0) 'верхнее основание
        Return a
    End Function
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        p = Piramida()
    End Sub
    Private Sub HScrollBar1_Scroll_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
        grad = HScrollBar1.Value
        Label9.Text = grad
        p = Piramida()
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim ochistka As Graphics = PictureBox1.CreateGraphics()
        ochistka.Clear(Color.White)
    End Sub
 
    Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
        y1 = VScrollBar1.Value / 8
        p = Piramida()
    End Sub
 
    Private Sub VScrollBar2_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar2.Scroll
        x1 = VScrollBar2.Value / 8
        p = Piramida()
    End Sub
    Private Sub VScrollBar3_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar3.Scroll
        y0 = VScrollBar3.Value
        p = Piramida()
    End Sub
 
    Private Sub VScrollBar4_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar4.Scroll
        x0 = VScrollBar4.Value
        p = Piramida()
    End Sub
 
    Private Sub HScrollBar2_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar2.Scroll
 
    End Sub
End Class
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2014, 20:26
Ответы с готовыми решениями:

Блок не растягивается по вертикали
Создаю сайт. Имеется один блок - wrapper, он отцентровывает все элементы страницы, ширина его...

Нарисовать квадрат, который постепенно растягивается по вертикали, превращаясь в прямоугольник
Нарисовать квадрат, который постепенно растягивается по вертикали, превращаясь в прямоугольник, а...

С !doctype высота header не растягивается попроцентно, а без него растягивается
Не нашел подобной другой темы. Имею такую же проблему. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML...

Пирамида
Напишите конструирующую программу для пирамиды

1
207 / 224 / 87
Регистрация: 21.04.2013
Сообщений: 404
02.07.2014, 02:39 2
IvanKZN, у Вас в расчетах точек не используется переменная y1.
Первый вариан:
Нужно переписывать формулы расчета точек с учетом y1. Я, чесно говоря, затрудняюсь переписать такие вычисления.

Второй вариант:
Задать в GraphicsPath Polygon своей фигуры (точки) и масштабировать его.
Пример с квадратом. На форме - PictureBox1, VScrollBar1, VScrollBar2
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
Imports System.Drawing.Drawing2D
 
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        VScrollBar1.Value = 10
        VScrollBar2.Value = 10
    End Sub
 
 
    Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
        Dim gp As New GraphicsPath
 
        gp.AddPolygon(New Point() _
                      {New Point(-25, -25), New Point(25, -25), _
                       New Point(25, 25), New Point(-25, 25)})
 
        Dim scaleX As Single = CSng(VScrollBar1.Value / 10)
        Dim scaleY As Single = CSng(VScrollBar2.Value / 10)
 
        Dim m As New Matrix
        m.Scale(scaleX, scaleY)
 
        gp.Transform(m)
 
        m.Dispose()
 
        e.Graphics.TranslateTransform(CSng(PictureBox1.Width / 2), CSng(PictureBox1.Height / 2))
 
        e.Graphics.DrawPath(Pens.Black, gp)
    End Sub
 
    Private Sub VScrollBar1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VScrollBar2.ValueChanged, VScrollBar1.ValueChanged
        PictureBox1.Refresh()
    End Sub
End Class
Сдвигать координаты можно либо изменяя параметры в e.Graphics.TranslateTransform,
либо задавая сдвиги в m.Translate.

Повороты фигуры: m.Rotate или m.RotateAt
1
02.07.2014, 02:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.07.2014, 02:39
Помогаю со студенческими работами здесь

пирамида
Найти V пирамиды, ограниченной координатными осями и плоскостью 3х - 2у + 4z + 12 = 0

Пирамида
Почему печатает 11 строк а не 20 ведь указано что i<=20? #include <iostream.h> int main() {...

Пирамида
как перевернуть Пирамиду? Чтобы высота была в начале координат?CCube Cube; Complex...

Пирамида
Здравствуйте. Помогите решить задачу: Даны координаты вершин пеирамиды А1А2А3А4: А1(3;5;4),...

пирамида
помогите мне надо начертить пирамиду с 6 сторон и 7 граней... как это вообще возможно я не...

ПИРАМИДА
Расположите на форме 7 компонентов Tpanel так, чтобы получилась разноцветная пирамида. При щелчке...


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

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