Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2017, 15:55   #1
Роман12212221
 
Регистрация: 27.11.2016
Сообщений: 4
По умолчанию Как сделать, чтобы клетки не заходили друг на друга

В общем имею, я такой прекрасный код написаный на си# с taoframeworkом. Рисуемые кирпичи имеют размер 3. Но кирпичи залазят друг на друге. Помогите!
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tao.Platform.Windows;
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.FreeType;


namespace Cells.engine
{

    class GlCode
    {

       static double mx;
       static double my;
       static double rx;
       static double ry;
       static double dx;
       static double dy;
       static List<double> xVector = new List<double>();
       static List<double> yVector = new List<double>();
        


        public static void glutINI(SimpleOpenGlControl opengl, bool inited)
        {


            if (inited == false)
            {
                Glut.glutInit();
                Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_SINGLE);
                inited = true;
            }
            else if (inited == true)
            {

            }

            Gl.glClearColor(0, 0, 0, 1);
            // установка порта вывода в соответствии с размерами элемента opengl 
            Gl.glViewport(0, 0, opengl.Width, opengl.Height);
            // настройка проекции 
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            // теперь необходимо корректно настроить 2D ортогональную проекцию 
            // в зависимости от того, какая сторона больше
            // мы немного варьируем то, как будет сконфигурированный настройки проекции 
            /*if ((float)opengl.Width <= (float)opengl.Height)
            { 
                Glu.gluOrtho2D(0.0, 30.0 * (float)opengl.Height / (float)opengl.Width, 0.0, 30.0); 
            }
            else 
            { 
                Glu.gluOrtho2D(0.0, 30.0 * (float)opengl.Width / (float)opengl.Height, 0.0, 30.0);
            }*/
            Gl.glMatrixMode(Gl.GL_MODELVIEW); Gl.glLoadIdentity();
        }





        public static void Draw(SimpleOpenGlControl opengl)
        {

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); 
            Gl.glLoadIdentity();
            Gl.glColor3f(255, 0, 0);
            checkformouse(opengl);
            Gl.glPointSize(5);
            Gl.glBegin(Gl.GL_POINTS);
            int Vectors = (xVector.Count) -1;
           
            for (int i = 0; i <= Vectors; i++)
            {
                Gl.glVertex2d(xVector[i], yVector[i]);
            }
            
                Gl.glEnd();
            Gl.glFlush(); 
            opengl.Invalidate();



        }
        public static void checkformouse(SimpleOpenGlControl opengl)
        {
            opengl.MouseDown += new MouseEventHandler(opengl_MouseDown);

        }

        static void opengl_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                double mx = e.X;
                double my = e.Y;
                senddrawdata(mx, my);
                return;
            }


        }
        static void senddrawdata(double x, double y)
        {
            mx = x;
            my = y;
     
            calculatedata();


        }
        public static void sendresolution(double x,double y)
        {
            rx = x;
            ry = y;

        }
        public static void calculatedata()
        {
           if (mx > rx / 2)
            {
                dx = ((mx - rx / 2) / (rx / 2));
                dy = -(my - ry / 2) / (ry/2);
                xVector.Add(dx);
                yVector.Add(dy);

           /* }
            else
            {
                dx = 1 - (mx / (rx / 2));
            }
           
            
         }

    }
}
Роман12212221 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать чтоб столбцы равнялись друг на друга bodalev HTML и CSS 2 12.05.2015 21:18
Uses. Правильно обьявить 2 класса, чтобы те взаимно использовали друг-друга. Человек_Борща Общие вопросы Delphi 3 03.06.2012 08:06
как реализовать чтобы при нажатии прямоугольники меняли цвета не зависимо друг от друга programmm Win Api 0 18.05.2011 17:50
Как сделать чтобы любое введенное значение в выделенной ячейке перемещалось на 3 клетки? Ann Lastovka Microsoft Office Excel 1 11.08.2010 17:56
Как сделать так, что б Float-элементы не уезжали друг под друга (если не влазят в экран) barbiturat HTML и CSS 3 09.12.2008 10:26