public void RedrawGrid() { DrawingArea.Refresh(); DrawingOffsetHorizontal = (DrawingArea.Width / 2) - ((int)(ScaleNumber.Value * LoadedScreen.Width) / 2); DrawingOffsetVertical = (DrawingArea.Height / 2) - ((int)(ScaleNumber.Value * LoadedScreen.Height) / 2); Graphics g = DrawingArea.CreateGraphics(); SolidBrush n = new SolidBrush(Color.Black); SolidBrush w = new SolidBrush(Color.White); g.FillRectangle(w, DrawingOffsetHorizontal, DrawingOffsetVertical, ((float)(LoadedScreen.Width * ScaleNumber.Value)), ((float)(LoadedScreen.Height * ScaleNumber.Value))); for (ushort i = 0; i < LoadedScreen.Width; i++) { for (ushort x = 0; x < LoadedScreen.Height; x++) { if (LoadedScreen[i, x]) { g.FillRectangle(n, ((float)(i * ScaleNumber.Value)) + DrawingOffsetHorizontal, ((float)(x * ScaleNumber.Value)) + DrawingOffsetVertical, ((float)(ScaleNumber.Value)), ((float)(ScaleNumber.Value))); } } } for (int i = ((int)ScaleNumber.Value) + DrawingOffsetHorizontal; i <= (Math.Min(DrawingArea.Width, (LoadedScreen.Width * ScaleNumber.Value))) + DrawingOffsetHorizontal && ScaleNumber.Value >= 16; i += (int)ScaleNumber.Value) { Pen p = new Pen(Color.Blue); Int32 LowerLimit = Math.Min((int)ScaleNumber.Value * LoadedScreen.Height, DrawingArea.Height); g.DrawLine(p, new Point(i, DrawingOffsetVertical), new Point(i, LowerLimit + DrawingOffsetVertical)); } for (int i = ((int)ScaleNumber.Value) + DrawingOffsetVertical; i <= (Math.Min(DrawingArea.Height, (LoadedScreen.Height * ScaleNumber.Value))) + DrawingOffsetVertical && ScaleNumber.Value >= 16; i += (int)ScaleNumber.Value) { Pen p = new Pen(Color.Blue); Int32 LowerLimit = Math.Min((int)ScaleNumber.Value * LoadedScreen.Width, DrawingArea.Width); g.DrawLine(p, new Point(DrawingOffsetHorizontal, i), new Point(LowerLimit + DrawingOffsetHorizontal, i)); } }
private void FillOne(Point e) { if (!IsPointInArea(e)) { return; } //SolidBrush - сплошная закраска цветом кисти; //TextureBrush - наложение картинки (image) на область закраски; //HatchBrush - закраска области предопределенным узором; //LinearGradientBrush - сплошная закраска c переходом цвета кисти (градиентная закраска); //PathGradientBrush -сплошная закраска c переходом цвета кисти по специальному алгоритму. var x = Convert.ToInt32(e.X); // координата по оси X var y = Convert.ToInt32(e.Y); // координата по оси Y var pixelColor = PixelColor(x, y); var myBrush = new SolidBrush(colorCurrentBox); x = x / CellWidth; y = y / CellHeight; using (Graphics g = Graphics.FromImage(DrawingArea.Image)) { g.FillRectangle(myBrush, x * CellWidth, y * CellHeight, CellWidth, CellHeight); } DrawingArea.Refresh(); }
private void CellCountY_ValueChanged(object sender, EventArgs e) { using (Graphics g = Graphics.FromImage(DrawingArea.Image)) { g.Clear(DrawingArea.BackColor); DrawHorizontal(g); DrawVertical(g); } UpdateCellLabel(); DrawingArea.Refresh(); }