コード例 #1
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;
                        }
                    }
                }
            }
        }
コード例 #2
0
        private int[,,] Arrayboard;                                         // масив - "буфер обміну"

        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 void SetBrushFromFile(string FileName) // метод установка пензлика з файлу
 {
     standartBrush = new anBrush(FileName);
 }
コード例 #4
0
 public void SetSpecialBrush(int Num) // метод установки спеціального пензлика
 {
     standartBrush = new anBrush(Num, true);
 }
コード例 #5
0
 public void SetStandartBrush(int SizeBrush) // метод установки стандартного пензлика по розміру
 {
     standartBrush = new anBrush(SizeBrush, false);
 }