我第一次在c#中使用 ProgressBar 。 我们的想法是在简单的游戏中使用 ProgressBar 作为健康栏。 事情是我认为条形图的最大值是100%,但我想给它一个更高的值,比如让我们说1000%,或者不确定是否可能,给条形码一个整数值而不是一个百分比。
progressBar1.Increment(100);
这是我将健康状况初始化为100个点的地方。即使我使用这种语法:
progressBar1.Increment(1000);
我减去:
progressBar1.Increment(-25);
玩家正在失去1/4的生命,好像他只有100点生命值。 知道如何更改最大条形值吗? 提前致谢。
答案 0 :(得分:5)
你应该有另一个保持玩家健康状况的变量。将健康数据存储在控件中并不是一个好主意。
您可以执行以下操作:
progressBar1.Value = Math.min(100, actualHealth);
然后更新变量actualHealth
,该变量可能超过100的最大控制范围。然后您可以更改控件的样式或其他可视元素以显示播放器被“缓冲”。
答案 1 :(得分:3)
您尚未说明您是使用Windows窗体,WPF还是其他内容,但大多数进度条允许您指定最大值和最小值。听起来并不是你想要1000 %,只是最大值1000。
有关Windows窗体示例,请参阅ProgressBar.Maximum
。
然而,我首先不会亲自使用ProgressBar
。它不是进展 - 如果你只想要一个绘制条形的控件,然后找到或写一个。如果用户看到的是 progress 栏,但实际上只是一个监控栏,表明当前的健康状况等,他们可能会感到困惑。
(正如Tim所说,我也不会使用控件作为玩家状态的真相来源。我可能不会将 display 代码放在同一个类中玩家“模型”代码,但这是一个单独的问题。)
答案 2 :(得分:2)
只需将进度条的最大值设置为您想要的任何值即可。在属性窗口或代码中。
progressBar1.maximum = 7331;
答案 3 :(得分:2)
您可以这样做:
progressBar1.Maximum = 700;
当你这样做时:
progressBar1.Increment(-25);
你打算这样做
700-25
但如果你想减去25%,你可以做到这一点;
int a = 700;
prograssBar1.Maximum = a;
//When you'd like to subtract the 25% insert this:
progressBar1.Increment(-a/(100/25));
答案 4 :(得分:1)
答案为时已晚,但也许这个答案对某些人有用。此代码用于未知的最大值。我的意思是,当你不知道价值多少时,这可以帮助你。
int percent = (int)(Convert.ToDouble(MaximumValue) > 0 ? (100 - (float)(Convert.ToDouble(Value) / Convert.ToDouble(MaximumValue)) * 100d) : 100);
此代码适用于某些操作,例如将许多文件拖到列表框对象或其他...
我希望这对你有用和有用。祝你好运:)
答案 5 :(得分:0)
我假设当玩家获得某种力量提升时你想让健康值大于100%,但是这个奖励健康状况并没有出现在健康栏中,只有0到100%。
请勿将进度条位置属性用作播放器运行状况的源数据。它仅限于进度条的范围,因此根本不适合该任务。
相反,使用一个不同的变量来维持玩家的健康状况。此值可以超过100,但是当您更新进度条位置时,会将其剪切到进度条的范围内。
最重要的信息,这是真的重要,是你需要摆脱使用视觉控件来存储状态的习惯。将状态存储在模型对象中,并根据模型中的状态更新视图。
答案 6 :(得分:0)
你仍然可以使用进度条的最小 - 最大百分比值,同时保持自己的值不在其中。
然后您可以将添加/减少转换为百分比值。
答案 7 :(得分:0)
您应该首先设置:
progressBar1.Maximum = 1000;
progressBar1.Minimum = 0;
然后你可能想设置一个步骤,或者手动定义它的值:
1) progressBar1.Step = 500;
2) progressBar1.Value = 500;
如果你去1)你应该打电话给.PerformStep()
private void button1_Click(object sender, EventArgs e)
{
progressBar1.PerformStep();
}