我正在尝试在 Windows 窗体上创建一个图形,该图形将模拟我尝试ProgressBar
使用用作健康栏的操作。我不喜欢 ,因为当我将equalProgressBar
设置为 时,它会在开始时为填充设置动画。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);
}
}
我有一个计时器每 50 毫秒重绘一次表单。
我有一个问题,黑色矩形内的红色矩形一开始会画得很好,但是一旦我的角色受到伤害并且CurrentHealth
小于MaxHealth
,结果72*(p1.CurrentHealth/p1.MaxHealth)
返回为 0,并且矩形甚至不会出现在屏幕,因为我认为它是用 0 宽度绘制的......
我不知道这个计算出了什么问题会导致它返回 0。我已经通过调试器运行了一堆,输入的值看起来都是正确的,起初都是 30 和 30,然后是 28, 30 下一次通过,我得到的值为 0...