ProgressBar
ヘルスバーとして使用しようとしていたことをシミュレートする Windows フォーム上に描画を作成しようとしています。を に等しくProgressBar
設定すると、開始時に塗りつぶしがアニメートされるため、は好きではありませんでした。Value
Maximum
これが私の方法です
private void Battlefield_Paint(object sender, PaintEventArgs e)
{
using (SolidBrush blackBrush = new SolidBrush(Color.Black))
using (SolidBrush redBrush = new SolidBrush(Color.Red))
using (Graphics formGraphics = this.CreateGraphics())
{
formGraphics.FillRectangle(blackBrush, new Rectangle(12, 12, 76, 23));
formGraphics.FillRectangle(redBrush, new Rectangle(14, 14, 72*(p1.CurrentHealth/p1.MaxHealth), 19));
int result = 72 * (p1.CurrentHealth / p1.MaxHealth);
Console.WriteLine(result);
}
}
50msごとにフォームを再描画するタイマーがあります。
最初は黒い四角形の内側にある赤い四角形がうまく描画されるという問題がありますが、キャラクターがダメージを受けてCurrentHealth
未満になるMaxHealth
と、 の結果が72*(p1.CurrentHealth/p1.MaxHealth)
0 に戻り、四角形が画面、幅0で描画されていると思います...
0 を返すこの計算で何が問題なのかわかりません。デバッガーをたくさん実行したところ、最初は両方とも 30 と 30 になり、次に 28 のような値になりました。次回は30で、値は0になります...