void Draw_Board(int width, int height, int max_hor, int max_vert)
        {
            Pen blackPen = new Pen(Color.Red, 1);            //Создаем кисть которой рисовать будем (Цвет, толщина)

            for (int i = max_hor; i <= width + max_hor; i++) //Вертикальные линии доски
            {
                if ((i - max_hor) % 5 == 0)
                {
                    Front.DrawLine(new Pen(Color.Red, 3), i * Size_Box, 0, i * Size_Box, (height + max_vert) * Size_Box);
                }
                else
                {
                    Front.DrawLine(blackPen, i * Size_Box, 0, i * Size_Box, (height + max_vert) * Size_Box);
                }
            }
            for (int f = max_vert; f <= height + max_vert; f++) // Горизонтальные линии доски
            {
                if ((f - max_vert) % 5 == 0)
                {
                    Front.DrawLine(new Pen(Color.Red, 3), 0, f * Size_Box, (width + max_hor) * Size_Box, f * Size_Box);
                }
                else
                {
                    Front.DrawLine(blackPen, 0, f * Size_Box, (width + max_hor) * Size_Box, f * Size_Box);
                }
            }
            Nonogram_Board.Refresh(); // Обновляем рисунок в Пикчербоксе
        }
Пример #2
0
 private void Clear_Click(object sender, EventArgs e)
 {
     Nono.Clear();             // Очищаем пользовательский массив
     Back.Clear(Color.Empty);  // Очищаем пользовательский слой
     Nonogram_Board.Refresh(); //обновляем изображение
     using (var fStream = new FileStream("./BoardInfo.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
     {
         formatter.Serialize(fStream, Nono);
     }
 }
Пример #3
0
        void Initialize(int width, int height, int max_hor, int max_vert)
        {
            Nonogram_Board.Width  = (width + max_hor) * Size_Box + 1;                                                            //Устанавливаем ширину области для отрисовки (ПикчерБокса) (Ширина изображения + Ширина максимального кол-ва условий в строке) умноженное на размер ячейки
            Nonogram_Board.Height = (height + max_vert) * Size_Box + 1;                                                          // -//- (Высота изображения + Высота максимального кол-ва условий в столбце)
            Clear.Location        = new Point(Nonogram_Board.Location.X + Nonogram_Board.Width - Clear.Width, Clear.Location.Y); //Устанавливаем положение кнопки очистить в Правом углу изображения (Координата левого верхнего угла изображения + ширина изображения - Ширина кнопки)
            Control.Location      = new Point(Nonogram_Board.Location.X, Control.Location.Y);                                    // Устанавливаем положение кнопки Проверить в левом верхнем углу
            Bitmap bBack  = new Bitmap((width + max_hor) * Size_Box + 1, (height + max_vert) * Size_Box + 1);                    // создаем битмап для рисования на заднем плане на 16 ячеек размера Size
            Bitmap bFront = new Bitmap((width + max_hor) * Size_Box + 1, (height + max_vert) * Size_Box + 1);

            Back  = Graphics.FromImage(bBack);
            Front = Graphics.FromImage(bFront);
            Nonogram_Board.BackgroundImage = bBack;
            Nonogram_Board.Image           = bFront;
            Nonogram_Board.Refresh();
        }
Пример #4
0
        void Draw_Numbers(Numbers num)
        {
            Font       drawFont  = new Font("Arial", 16);       //Создаем шрифт которым будем писать условия
            SolidBrush drawBrush = new SolidBrush(Color.Black); //Создаем кисть

            for (int i = 0; i < num.horizontal.Count(); i++)    //Отрисовываем условия строк
            {
                for (int f = 0; f < num.horizontal[i].Count; f++)
                {
                    Front.DrawString(num.horizontal[i][f].ToString(), drawFont, drawBrush, (num.max_horiz - num.horizontal[i].Count + f) * Size_Box, (num.max_vert + i) * Size_Box + 2);
                }
            }
            for (int i = 0; i < num.vertical.Count(); i++) //Отрисовываем условия столбцов
            {
                for (int f = 0; f < num.vertical[i].Count; f++)
                {
                    Front.DrawString(num.vertical[i][f].ToString(), drawFont, drawBrush, (num.max_horiz + i) * Size_Box + 2, (num.max_vert - num.vertical[i].Count + f) * Size_Box);
                }
            }
            Nonogram_Board.Refresh();     //Обновляем изображение после отрисовки
        }
Пример #5
0
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)                               //Если была нажата клавиша мышки на пикчербоксе
        {
            int X = Cursor.Position.X - this.DesktopLocation.X - Nonogram_Board.Location.X - 8;            // Вычисляем позицию куда кликнули мышкой
            int Y = Cursor.Position.Y - this.DesktopLocation.Y - Nonogram_Board.Location.Y - 30;
            int X1 = X / Size_Box, Y1 = Y / Size_Box;                                                      //Определяем в какой квадратик мы попали курсором

            if (e.Button == MouseButtons.Left && (X1 - Nums.max_horiz) >= 0 && (Y1 - Nums.max_vert) >= 0)  //Если мы кликнули Левой клавишой мышки и попали именно в область изображения то
            {
                Nono.Draw((X1 - Nums.max_horiz), (Y1 - Nums.max_vert), 1);                                 //Добавляем в МАССИВ пользовательского ввода в позицию куда кликнули 1 (Зарисованный квадратик)
                Nono.ReDraw(Back, Size_Box, Nums);                                                         // перерисовываем Слой полльзователя
            }
            if (e.Button == MouseButtons.Right && (X1 - Nums.max_horiz) >= 0 && (Y1 - Nums.max_vert) >= 0) // Если мы кликнули Правой клавишой мышки и попали именно в область изображения то
            {
                Nono.Draw((X1 - Nums.max_horiz), (Y1 - Nums.max_vert), 2);                                 //Добавляем в МАССИВ пользовательского ввода в позицию куда кликнули 2 (Пустая ячейка)
                Nono.ReDraw(Back, Size_Box, Nums);
            }

            using (var fStream = new FileStream("./BoardInfo.dat", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                formatter.Serialize(fStream, Nono);
            }

            Nonogram_Board.Refresh();
        }