私はクラスを通してフォーム上に物事を描こうとしています。ここにコードがあります。また、静的でないフィールド、メソッド、またはプロパティにオブジェクト参照が必要です
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();
}
問題はg = frmMainGame.picGeneral.CreateGrpahics;
です。コントロールは静的ではないので、コードを移動する代わりにクラスを介してアクセスする方法と、フォーム自体のコードにコードを再コードする必要があります。
が関数にパラメータとしてそれを取る拡張メソッドにあなたの方法を回し処理するイベントを追加することができますか? – Magnus