[英]And Object reference is required for the non-static field, method, or property
I'm attempting to draw things on a form through a class.我试图通过 class 在表格上绘制东西。 Here is the code.
这是代码。
public static void DrawStatBars()
{
Graphics g = Graphics.FromImage(Graphic.StatBarBackbuffer);
Font fnt = new Font("Microsoft Sans Serif", 8, FontStyle.Bold);
g.DrawImage(Graphic.EmptyHPBar, new Point(12, 12));
g.DrawImage(Graphic.EmptyManaBar, new Point(12, 35));
g.DrawImage(Graphic.EmptyEXPBar, new Point(12, 58));
g.DrawImage(Graphic.HPBar, new Rectangle(12, 15, (int)picHpWidth, Graphic.HPBar.Height), new Rectangle(0, 0, (int)picHpWidth, Graphic.HPBar.Height), GraphicsUnit.Pixel);
g.DrawImage(Graphic.ManaBar, new Rectangle(12, 38, (int)picManaWidth, Graphic.ManaBar.Height), new Rectangle(0, 0, (int)picManaWidth, Graphic.ManaBar.Height), GraphicsUnit.Pixel);
g.DrawImage(Graphic.EXPBar, new Rectangle(12, 61, (int)picEXPWidth, Graphic.EXPBar.Height), new Rectangle(0, 0, (int)picEXPWidth, Graphic.EXPBar.Height), GraphicsUnit.Pixel);
g.DrawString(lblHPText, fnt, new SolidBrush(Color.Black), 40, 15);
g.DrawString(lblManaText, fnt, new SolidBrush(Color.Black), 40, 38);
g.DrawString(lblEXPText, fnt, new SolidBrush(Color.Black), 40, 63);
g.Dispose();
g = frmMainGame.picGeneral.CreateGraphics;
g.DrawImage(Graphic.StatBarBackbuffer, new Point(0, 0));
g.Dispose();
}
The problem is g = frmMainGame.picGeneral.CreateGrpahics;
问题是
g = frmMainGame.picGeneral.CreateGrpahics;
. . Since the control is not static how would I go about accessing it through a class instead of moving the code and having to re-code it to be in the code for the form itself.
由于控件不是 static 我将如何 go 关于通过 class 访问它而不是移动代码并且必须将其重新编码为表单本身的代码。
A couple of options spring to mind:几个选项 spring 要记住:
You could add an event to handle your PictureBox.Paint method您可以添加一个事件来处理您的 PictureBox.Paint 方法
private void picGeneral_Paint(object sender, PaintEventArgs e)
{
// Use e.Graphics to do your drawing!
e.Graphics.DrawStatsBars();
}
Turn your method into an extension method把你的方法变成扩展方法
public static class GraphicsExtensions
{
public static void DrawStatsBars(this Graphics g)
{
// Your code
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.