增加椭圆的宽度

时间:2014-07-14 11:34:35

标签: c# winforms

我想编写一个程序,允许用户调整在表单上绘制的椭圆的宽度和高度。 这是我目前的代码:

using (Graphics graphics = CreateGraphics())
{
    graphics.FillEllipse(new SolidBrush(colorDlg.Color), e.X, e.Y, x, y);
}

此代码是在MouseMove事件处理程序中编写的。问题是我希望用户能够通过单击按钮或menustrip来增加宽度x和高度y。复杂的是这些控件的事件处理程序不接受MouseEventArgs作为参数,因此编译器为e.X和e.Y提供了错误。

欢迎任何有用的想法。感谢。

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

private int x;
private int y;
private int width;
private int height;

private SomeForm()
{
    // Initialize ellipse position and size with some values
    ...
}

private void btnIncreaseWidth_Click(object sender, EventArgs e)
{
    width += 5; // Increase width by 5 pixels
    Invalidate();
}

private void btnDecreaseWidth_Click(object sender, EventArgs e)
{
    width -= 5; // Decrease width by 5 pixels
    Invalidate();
}

private void btnIncreaseHeight_Click(object sender, EventArgs e)
{
    height += 5; // Increase height by 5 pixels
    Invalidate();
}

private void btnDecreaseHeight_Click(object sender, EventArgs e)
{
    height -= 5; // Decrease height by 5 pixels
    Invalidate();
}

private void SomeForm_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    Graphics g = e.Graphics;
    g.FillEllipse(new SolidBrush(colorDlg.Color), x, y, width, height);
}

这假设你有4个按钮:两个增加/减少宽度,两个增加/减少高度。按下按钮后,相应的尺寸将更改,并且表单的内容无效(=>重新绘制)。