gpt4 book ai didi

c# - 在填充的矩形上画线

转载 作者:行者123 更新时间:2023-11-30 20:56:03 24 4
gpt4 key购买 nike

我正在尝试使用以下 C# 代码在用户控件上绘制 7 x 5 网格:

Pen p = _createPen( Brushes.Red );

int slotWidth = this.Width / 7;
int slotHeight = this.Height / 5;

// columns = days
for ( int c = 1; c < 7; c++ )
{
// rows = weeks
for ( int r = 1; r < 5; r++ )
{
g.FillRectangle( Brushes.LightGray, new Rectangle( 1, ( ( r - 1 ) * slotHeight ) + 1, this.Width - 2, 10 ) );
g.DrawLine( p, new Point( 0, r * slotHeight ), new Point( this.Width, r * slotHeight ) );
}
g.DrawLine( p, new Point( c * slotWidth, 1 ), new Point( c * slotWidth, this.Height - 2 ) );
}
}

我遇到的问题是最后一列的线绘制在填充的矩形上,但其他列不是。我不确定为什么首先完成 FillRectangle(),以便随后的 DrawLine() 方法应该在矩形上绘制,但它没有这样做。

代码已添加到用户控件的 Paint() 事件中。

最佳答案

简单放置一行:

g.DrawLine(p, new Point(c * slotWidth, 1), new Point(c * slotWidth, this.Height - 2));

在行的 for 循环之前。

  // columns = days
for (int c = 1; c < 7; c++)
{
g.DrawLine(p, new Point(c * slotWidth, 1), new Point(c * slotWidth, this.Height - 2));
// rows = weeks
for (int r = 1; r < 5; r++)
{
g.FillRectangle(Brushes.LightGray, new Rectangle(1, ((r - 1) * slotHeight) + 1, this.Width - 2, 10));
g.DrawLine(p, new Point(0, r * slotHeight), new Point(this.Width, r * slotHeight));
}
}

最后一行正在绘制其他行,因为没有下一次迭代。在最后一次迭代之前的迭代中,您每次都在用矩形和红色列线过度绘制。

关于c# - 在填充的矩形上画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com