Компьютерная графика, мультимедиа и игры на Visual C#


         

Глава Изображение и управление - часть 2


    End Sub

Чтобы мы могли рисовать заданную поверхность и оси координат внутри графического элемента PictureBox, в окне Class Name выбираем PictureBox1, а в окне Method Name выбираем Paint. Появляется файл Form1.vb с шаблоном (процедуры PictureBox1_Paint), который после записи нашего кода принимает такой вид.

Листинг 38.2. Метод PictureBox1_Paint для рисования поверхности.

    Private Sub PictureBox1_Paint(ByVal sender As Object, _

    ByVal e As System.Windows.Forms.PaintEventArgs) _

    Handles PictureBox1.Paint

    'Масштабируем все графические объекты на PictureBox1.

    'Коэффициенты масштабирования:

    Dim M_1 As Single = 29

    Dim M_2 As Single = 31

    e.Graphics.ScaleTransform( _

    PictureBox1.Size.Width / M_1, _

    -PictureBox1.Size.Height / M_2, _

    MatrixOrder.Append)

    Dim M_3 As Single = 2

    Dim M_4 As Single = 2

    e.Graphics.TranslateTransform( _

    PictureBox1.Size.Width / M_3, _

    PictureBox1.Size.Height / M_4, _

    MatrixOrder.Append)

    'Задавая M_1, M_2, M_3, M_4 другие значения,

        'мы будем смещать поверхность по отношению к осям x,y,z.

        'Матрица преобразования (transformation matrix):

        Dim tr As myClassMatrix3D = CalculateTransformation()

        'Применяем матрицу преобразования к точкам:

        For x As Integer = 0 To x_max

            For y As Integer = 0 To y_max

                Points(x, y).Transformation(tr)

            Next

        Next

        'Объявляем индексы элементов массива myArrayVB(i, j):

        Dim i, j As Integer

        'Задаем границы индексов массива myArrayVB(i, j):

        Dim N_x As Integer = 2000

        Dim N_y As Integer = 1

        'Задаем массив myArrayVB(i, j)переменных типа Single,

        'когда i = 0,1,2,3,...,N_x; j = 0,1,2,3,...,N_y:

        Dim myArrayVB(N_x, N_y) As Single

        'Первая, вторая и третья границы массива, разделяющие

        'линии поверхности, параллельные xz, yz, и оси:

        Dim N_1_myArrayVB, N_2_myArrayVB, _




Содержание  Назад  Вперед