我想编写一个程序,允许用户调整在表单上绘制的椭圆的宽度和高度。 这是我目前的代码:
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提供了错误。
欢迎任何有用的想法。感谢。
答案 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个按钮:两个增加/减少宽度,两个增加/减少高度。按下按钮后,相应的尺寸将更改,并且表单的内容无效(=>重新绘制)。