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