
我現在做了一個 18*18 的正方形。我想用黑色填充正方形的第一個邊界,如圖所示,
我應該怎么辦?
public partial class Form1 : Form
{
private int XTILES = 25;
private int YTILES = 25;
private int TILELOCATION = 20;
Graphics g;
Pen pen;
public Form1()
{
InitializeComponent();
pen = new Pen(Color.Black);
}
private void DrawBoard()
{
g = panel.CreateGraphics();
for(int i = 0; i < 19; i )
{
g.DrawLine(pen, new Point(TILELOCATION i * XTILES, TILELOCATION),
new Point(TILELOCATION i * XTILES, TILELOCATION 18 * XTILES));
g.DrawLine(pen, new Point(TILELOCATION, TILELOCATION i * YTILES),
new Point(TILELOCATION 18 * YTILES, TILELOCATION i * YTILES));
}
}
private void panel_Paint(object sender, PaintEventArgs e)
{
base.OnPaint(e);
DrawBoard();
}
}
uj5u.com熱心網友回復:
有很多方法。這是其中之一:使用 FillRect 分別繪制頂部、左側、右側和底部邊緣。
Brush brush = new SolidBrush(Color.Black);
private void panel_Paint(object? sender, PaintEventArgs e)
{
DrawBoundary(e.Graphics);
}
void DrawBoundary(Graphics g)
{
g.FillRectangle(brush, ToGraphics(new Rectangle(0, 0, XTILES, 1)));
g.FillRectangle(brush, ToGraphics(new Rectangle(XTILES - 1, 0, 1, YTILES)));
g.FillRectangle(brush, ToGraphics(new Rectangle(0, YTILES - 1, XTILES, 1)));
g.FillRectangle(brush, ToGraphics(new Rectangle(0, 0, 1, YTILES - 1)));
}
public Rectangle ToGraphics(Rectangle r)
{
return new Rectangle(TILELOCATION r.X * TILESIZE, TILELOCATION r.Y * TILESIZE, r.Width * TILESIZE, r.Height * TILESIZE);
}
[添加-見評論]:
void DrawBoard(Graphics g)
{
for (int i = 0; i <= XTILES; i )
g.DrawLine(pen,
new Point(TILELOCATION i * TILESIZE, TILELOCATION),
new Point(TILELOCATION i * TILESIZE, TILELOCATION YTILES * TILESIZE - 1));
for (int i = 0; i <= YTILES; i )
g.DrawLine(pen,
new Point(TILELOCATION, TILELOCATION i * TILESIZE),
new Point(TILELOCATION XTILES * TILESIZE - 1, TILELOCATION i * TILESIZE));
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522135.html
標籤:C#表格gdi
