Если вы создаете объект Graphics
из растрового изображения, он будет рисоваться на этом растровом изображении, а не в вашем пользовательском интерфейсе.Вместо этого используйте объект Graphics
из PaintEventArgs e
вашего OnPaint
метода, чтобы рисовать непосредственно на форме или элементе управления.
e.Graphics.FillEllipse(new SolidBrush(Color.Green), x, y, sizeGridPoints, sizeGridPoints);
Вы никогда не должны создавать свой собственный объект Graphics
.
Создайте свой собственный элемент управления сеткой:
public class GridPanel : Panel
{
public GridPanel()
{
DoubleBuffered = true; // Speeds up drawing, e.g. when panel is resized.
// Set default colors
BackColor = Color.Black;
ForeColor = Color.Green;
}
private int _lenghtBetweenGridPoints = 20;
public int LenghtBetweenGridPoints
{
get { return _lenghtBetweenGridPoints; }
set {
if (value != _lenghtBetweenGridPoints) {
_lenghtBetweenGridPoints = value;
Invalidate(); // Redraw the grid.
}
}
}
private int _sizeGridPoints = 3;
public int SizeGridPoints
{
get {
return _sizeGridPoints;
}
set {
if (value != _sizeGridPoints) {
_sizeGridPoints = value;
Invalidate(); // Redraw the grid.
}
}
}
protected override void OnPaint(PaintEventArgs e)
{
// e.Graphics.Clear(Color.Black); Not necessary. We use the BackColor of the panel.
if (LenghtBetweenGridPoints > 0 && SizeGridPoints > 0) {
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; // Optional.
using (var brush = new SolidBrush(ForeColor)) { // We use the ForeColor of the panel.
for (int x = LenghtBetweenGridPoints; x < Width; x += LenghtBetweenGridPoints) {
for (int y = LenghtBetweenGridPoints; y < Height; y += LenghtBetweenGridPoints) {
e.Graphics.FillEllipse(brush, x, y, SizeGridPoints, SizeGridPoints);
}
}
}
}
}
}
После того, как он будет скомпилирован, он автоматически появится в окне панели инструментов, и вы сможете перетащить его в форму.Вы даже сможете редактировать свойства LenghtBetweenGridPoints
и SizeGridPoints
в окне свойств.
Вы также можете просто использовать уже имеющиеся свойства BackColor
и ForeColor
панели для сетки.Это позволит вам также установить цвета в окне свойств.Не забудьте утилизировать созданные вами кисти.