【发布时间】:2017-04-28 16:15:32
【问题描述】:
我很擅长用 C# 绘图 我想在鼠标点击时在 Form 上绘制椭圆。我写了一个代码,但它不想在鼠标点击时绘图。这是我的代码:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
}
Pen p = new Pen(Color.Red, 3);
SolidBrush b = new SolidBrush(Color.Red);
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
Graphics g = CreateGraphics();
if (radioButton1.Checked)
{
p.Color = Color.Red;
b.Color = Color.Red;
}
if (radioButton2.Checked)
{
p.Color = Color.Yellow;
b.Color = Color.Yellow;
}
if (radioButton3.Checked)
{
p.Color = Color.Blue;
b.Color = Color.Blue;
}
if (checkBox1.Checked)
g.FillEllipse(b, e.X, e.Y, 50, 50);
else
g.DrawEllipse(p, e.X, e.Y, 50, 50);
g.Dispose();
}
}
}
【问题讨论】:
-
您不应使用
CreateGraphics劫持控件的绘图表面。当窗体重新绘制时,您以这种方式绘制的任何内容都将消失。此外,您没有处理您的Pen和SolidBrush资源,因此您有 GDI 资源泄漏。