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


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


Листинг 33.2. Метод ProcessCmdKey.

protected override bool ProcessCmdKey(

    ref System.Windows.Forms.Message msg,

    System.Windows.Forms.Keys keyData)

{

    //Задаем угол поворота фигуры после нажатия клавиши:

    const float delta_theta = (float)pi / 20; ;

    //Рассчитываем новые координаты глаза наблюдателя:

    if (keyData == System.Windows.Forms.Keys.Left)

        theta_Eye = theta_Eye - delta_theta;

    if (keyData == System.Windows.Forms.Keys.Right)

        theta_Eye = theta_Eye + delta_theta;

    if (keyData == System.Windows.Forms.Keys.Up)

        phi_Eye = phi_Eye - delta_theta;

    if (keyData == System.Windows.Forms.Keys.Down)

        phi_Eye = phi_Eye + delta_theta;

    //Проектируем выбранное нами геометрическое тело:

    Projection(ref MatrixProjection, PerspectiveProjection,

        r_Eye, phi_Eye, theta_Eye,

        (float)x_focus, (float)y_focus, (float)z_focus,

         0, 1, 0);

    Designing((Bitmap)pictureBox1.Image);

    //В элементе PictureBox перерисовываем объект:

    pictureBox1.Refresh();

    return true;

}

Ниже этого кода записываем следующие все методы.

Листинг 33.3. Методы для решения поставленной задачи.

//Проектируем и при помощи процедуры DrawSolid

//рисуем выбранное флажком CheckBox геом-е тело:

private void Designing(Bitmap bmp)

{

    //Создаем объект g класса Graphics:

    Graphics g;

    //Связываем объект g с изображением bmp:

    g = Graphics.FromImage(bmp);

    //Задаем белый цвет типа Window

    //для элемента управления PictureBox1: 

    g.Clear(SystemColors.Window);

    //Высвобождаем ресурсы от графического объекта g:

    g.Dispose();

    //Преобразуем точки:

    TransformAllDataFull(ref MatrixProjection);

    //Проектируем и рисуем выбранное на CheckBox тело:

    if (checkBox1.CheckState ==

      System.Windows.Forms.CheckState.Checked)

    {

        DrawSolid(

        bmp, Tetrahedron, Cube - 1,

        System.Drawing.Color.Red, false);

    }

    if (checkBox2.CheckState ==




Начало  Назад  Вперед



Книжный магазин