我想从绘制形状的外部脚本调用一个函数。
表单当前打开为空白,上面没有形状,也没有错误。
下面是从不同文件调用函数的空形式
public partial class Form1 : Form
{
other_fff functions1 = new other_fff();
public Form1()
{
InitializeComponent();
functions1.draw_circle(this);
}
}
下面是我获得绘图功能的地方
class other_fff
{
public void draw_circle(Form1 the_form)
{
Pen Pen1 = new Pen(Color.Blue, 9);
Graphics g = the_form.CreateGraphics();
g.DrawEllipse(Pen1, 50, 50, 10, 5); // does not work
}
}
我怎样才能进行这次抽奖
您可以像这样向 paint-event 添加一个事件处理程序:
public static void DrawCircle(Form form)
{
form.Paint += OnPaint;
void OnPaint(object sender, PaintEventArgs e)
{
using (var Pen1 = new Pen(Color.Blue, 9))
{
e.Graphics.DrawEllipse(Pen1, 50, 50, 10, 5);
}
}
}
有许多缺点:
- 除非您添加一些取消注册事件的方法,否则无法删除圆圈。 管理绘制调用的顺序将
- 很困难,因为它将取决于事件处理程序的添加顺序。
- 外部零件在窗体上绘制有点奇怪。通常,如果需要,窗体和控件应管理自己的绘制。
您可能希望通知表单它应该绘制一个椭圆,并让表单代替绘制。