So I've been working on a health bar which shrinks and grows according to how much health your character has.

The problem is I don't know how to add a smooth increment to health regen.

Say if I want to gain 600 life over 4 seconds, how would I go about achieving this? Will I have to use float numbers, and in what way? The health bar checks how many pixels the bar should shrink and grow depending on the health value.

I don't 100% understand this, because you are talking about health regeneration, but posting graphics drawing code. If you increase the amount of health in the update logic, your drawing code won't have to know about it. Just draw the amount of health every frame, and it will naturally animate smoothly, because the health is animating smoothly.

Note that if you use these kinds of straightforward regeneration formulas it pretty much requires you to store your health in a floating point type. Otherwise, the fraction will get dropped every time you try adding to your health variable and the effective health regeneration rate will not match the desired rate. Ex: if you try adding 2.5 every frame to an int, it will only add 2, meaning that effective regeneration rate will be only 80% of desired.

The below is how I do this... It assumes you have Owner member variables, as floats, for Regen and Health. A few things to note: AddRegen is cumulative (if you AddRegen( 600, 4 ) as in your example, then two seconds later, do it again, the new value will be 900 over 4 seconds. If you want it to overwrite the current regen, replace += with =), AddRegen should work fine with negative regen (poison, burning, etc).