我想在图片框上绘制正方形,为此我使用此代码:
private void button1_Click(object sender, EventArgs e)
{
int x;
int y;
Point point = new Point(0, 0);
SolidBrush pen = new SolidBrush(Color.Red);
Size size = new Size(10, 10);
if (int.TryParse(textBox1.Text, out x) && int.TryParse(textBox2.Text, out y))
{
using (Graphics g = Map.CreateGraphics())
{
int n = x * y;
for (int i = 0; i < n; i++)
{
Rectangle[] rects =
{
new Rectangle(point, size)
};
point = point + size;
g.FillRectangles(pen, rects);
}
}
}
对于这个目标我必须做出这样的事情的主要问题:point = point.X + size.Width,但它们是不同的类型。
答案 0 :(得分:0)
您的代码有很多问题,您确实需要了解Winforms中的绘图。
但实际问题很简单:
您可以将Size
添加到Point
,如下所示:
point = Point.Add(point, size);
这使用了Point
类中许多非常未知的方法之一。
注意:Size
和Rectangle
类也包含有用的方法!
你的循环毫无意义,我很害怕。您应该在外部<{1}} 创建并在其中添加 循环。之后,您可以拨打List<Rectangle> rectangles = new List<Rectangle>
..!
至于其他问题:你很快就会发现为什么你的图形不会持久等等。
提示:Winforms图形基本规则#1:
永远不要使用FillRectangles(Brushes.somecolor, rectangles.ToaArray()) )
!永远不要尝试缓存control.CreateGraphics
对象!使用Graphics
或在控件的Bitmap bmp
事件中使用Graphics g = Graphics.FromImage(bmp)
参数绘制Paint
。