我正尝试在双击文本框中创建一个椭圆。但它似乎并没有发生。无法在鼠标双击事件上创建椭圆
panel.MouseClick += create_terms;
private void create_terms(object sender, EventArgs arg)
{
if (Phys_terms_check.Checked == true)
{
MouseEventArgs e = (MouseEventArgs)arg;
Graphics g = CreateGraphics();
SolidBrush p = new SolidBrush(Color.Red);
Pen erase = new Pen(Color.White);
Panel panel = (Panel)sender;
g.FillEllipse(p, e.X+panel.Left,e.Y+panel.Top,10,10);
}
}
的e.x
和e.y
似乎是给从发送方相对坐标。如何获得相对于表单的点。
__NEVER__使用'Graphics g = CreateGraphics();'将点添加到列表并编写Paint事件以使用其e.Graphics事件在所有这些点处绘制椭圆。在列表中添加一个点后,在要绘制的控件上调用Invalidate。另外:如果你想绘制它们,'TextBoxes'不是很开心;你可以看到__他们甚至没有Paint事件!! __更好地使用Panel,或者如果你想要它上面的文本和标签。 (顺便说一句:标签大大被低估) –
TaW
你可以详细说明如何调用绘画事件。每次用户双击面板时,我都需要调用它。 –
如果您想要使用面板(或标签),只需双击面板的Propertybox-Events-Pane中的Paint事件!对于[挂钩事件](http://stackoverflow.com/questions/33275763/copy-datagridview-values-to-textbox/33276161?s=2|0.3896#33276161)阅读此。对于绘制椭圆列表[见这篇文章](http://stackoverflow.com/questions/36924016/how-to-draw-multiple-ellipse-in-the-same-panel/36924235#36924235) - 一个更多的评论: 'Graphics g = CreateGraphics();'创建了一个Graphics对象,你可以只用它来绘制__non-persistent graphics__到__Form__上 – TaW