コード例 #1
0
        // конструктор класса
        public anEngine(int size_x, int size_y, int screen_w, int screen_h)
        {
            // при инициализации экземпляра класса сохраним настройки
            // размеров элементов и изображения в локальных переменных

            picture_size_x = size_x;
            picture_size_y = size_y;

            screen_width  = screen_w;
            screen_height = screen_h;

            // полосы прокрутки у нас пока отсутствуют, поэтому просто обнулим значение переменных
            scroll_x = 0;
            scroll_y = 0;

            // добавим новый слой для работы, пока что он будет единственным
            Layers.Add(new anLayer(picture_size_x, picture_size_y));

            // номер активного слоя - 0
            ActiveLayerNom = 0;

            // и создадим стандартную кисть
            // standartBrush = new anBrush("brush-1.bmp");
            standartBrush = new anBrush(3, false);
        }
コード例 #2
0
    public anEngine(int size_x, int size_y, int screen_w, int screen_h)
    {
        picture_size_x = size_x;
        picture_size_y = size_y;

        screen_width  = screen_w;
        screen_height = screen_h;


        scroll_x = 0;
        scroll_y = 0;


        Layers.Add(new anLayer(picture_size_x, picture_size_y));


        ActiveLayerNom = 0;

        standartBrush = new anBrush(3, false);
    }
コード例 #3
0
        public anEngine(int size_x, int size_y, int screen_w, int screen_h)
        {
            picture_size_x = size_x;
            picture_size_y = size_y;

            screen_width  = screen_w;
            screen_height = screen_h;


            scroll_x = 0;
            scroll_y = 0;


            Layers.Add(new anLayer(picture_size_x, picture_size_y));

            // номер активного слоя - 0
            ActiveLayerNom = 0;


            // standartBrush = new anBrush("brush-1.bmp");
            standartBrush = new anBrush(3, false);
        }
コード例 #4
0
 // установка кисти из файла
 public void SetBrushFromFile(string FileName)
 {
     standartBrush = new anBrush(FileName);
 }
コード例 #5
0
 public void SetSpecialBrush(int Nom)
 {
     standartBrush = new anBrush(Nom, true);
 }
コード例 #6
0
 public void SetStandartBrush(int SizeB)
 {
     standartBrush = new anBrush(SizeB, false);
 }
コード例 #7
0
        public void Draw(anBrush BR, int x, int y)
        {
            int real_pos_draw_start_x = x - BR.myBrush.Width / 2;
            int real_pos_draw_start_y = y - BR.myBrush.Height / 2;


            if (real_pos_draw_start_x < 0)
            {
                real_pos_draw_start_x = 0;
            }

            if (real_pos_draw_start_y < 0)
            {
                real_pos_draw_start_y = 0;
            }


            int boundary_x = real_pos_draw_start_x + BR.myBrush.Width;
            int boundary_y = real_pos_draw_start_y + BR.myBrush.Height;


            if (boundary_x > Width)
            {
                boundary_x = Width;
            }

            if (boundary_y > Heigth)
            {
                boundary_y = Heigth;
            }


            int count_x = 0, count_y = 0;


            for (int ax = real_pos_draw_start_x; ax < boundary_x; ax++, count_x++)
            {
                count_y = 0;
                for (int bx = real_pos_draw_start_y; bx < boundary_y; bx++, count_y++)
                {
                    if (BR.IsBrushErase())
                    {
                        Color ret = BR.myBrush.GetPixel(count_x, count_y);

                        // цвет не красный
                        if (!(ret.R == 255 && ret.G == 0 && ret.B == 0))
                        {
                            DrawPlace[ax, bx, 3] = 1;
                        }
                    }
                    else
                    {
                        //текущий цвет пикселя маски
                        Color ret = BR.myBrush.GetPixel(count_x, count_y);

                        // цвет не красный
                        if (!(ret.R == 255 && ret.G == 0 && ret.B == 0))
                        {
                            DrawPlace[ax, bx, 0] = ActiveColor.R;
                            DrawPlace[ax, bx, 1] = ActiveColor.G;
                            DrawPlace[ax, bx, 2] = ActiveColor.B;
                            DrawPlace[ax, bx, 3] = 0;
                        }
                    }
                }
            }
        }
コード例 #8
0
        // функция рисования
        // получает в качестве параметров кисть, для рисования и координаты,
        // где сейчас необходимо перерисовать перерисовать пиксели заданной кистью
        public void Draw(anBrush BR, int x, int y)
        {
            // функция лжевидимости кисти(не запускается)
            // определяем позиция старта рисования

            int real_pos_draw_start_x = x - BR.myBrush.Width / 2;
            int real_pos_draw_start_y = y - BR.myBrush.Height / 2;

            // корректируем ее для не выхода за границы массива

            // проверка на отрицательные значения (граница "слава")
            if (real_pos_draw_start_x < 0)
            {
                real_pos_draw_start_x = 0;
            }

            if (real_pos_draw_start_y < 0)
            {
                real_pos_draw_start_y = 0;
            }

            // проверки на выход за границу "справа"
            int boundary_x = real_pos_draw_start_x + BR.myBrush.Width;
            int boundary_y = real_pos_draw_start_y + BR.myBrush.Height;


            if (boundary_x > Width)
            {
                boundary_x = Width;
            }

            if (boundary_y > Heigth)
            {
                boundary_y = Heigth;
            }

            // счетчик пройденных строк и столбцов массива, представляющего собой маску кисти
            int count_x = 0, count_y = 0;

            // циклы по области, с учетом смещения кисти и коорекции для невыхода за границы массива
            for (int ax = real_pos_draw_start_x; ax < boundary_x; ax++, count_x++)
            {
                count_y = 0;
                for (int bx = real_pos_draw_start_y; bx < boundary_y; bx++, count_y++)
                {
                    // проверяем, не является ли данная кисть - стеркой
                    if (BR.IsBrushErase())
                    {
                        // данная кисть - стерка.
                        // помечаем данный пиксель как незакрашенный

                        // получаем текущий цвет пикселя маски
                        Color ret = BR.myBrush.GetPixel(count_x, count_y);

                        // цвет не красный
                        if (!(ret.R == 255 && ret.G == 0 && ret.B == 0))
                        {
                            // заполняем данный пиксель соотвествующим из маски, используя активный цвет
                            DrawPlace[ax, bx, 3] = 1;
                        }
                    }
                    else
                    {
                        // получаем текущий цвет пикселя маски
                        Color ret = BR.myBrush.GetPixel(count_x, count_y);

                        // цвет не красный
                        if (!(ret.R == 255 && ret.G == 0 && ret.B == 0))
                        {
                            // заполняем данный пиксель соотвествующим из маски, используя активный цвет

                            DrawPlace[ax, bx, 0] = ActiveColor.R;
                            DrawPlace[ax, bx, 1] = ActiveColor.G;
                            DrawPlace[ax, bx, 2] = ActiveColor.B;
                            DrawPlace[ax, bx, 3] = 0;
                        }
                    }

                    // сигнал о создании новго дисплейного списка
                }
            }
        }