It's easy to alter the brightness of an LED simply by varying the current through it.
Or you can keep the current constant at a fairly high value and vary the brightness by varying the percentage of time for which the LED is on. In other words, use pulse width modulation to control the brightness. There are several pulse width modulator circuits on site. The analogue opto isolator circuit uses pulse frequency modulation and could be modified for brightnes control.
Or you can vary the brightness by varying the voltage. LEDs are diodes, so the current/voltage graph is logarithmic. So a small change of voltage causes a high change of brightness. Voltage is around 2 volts and is very repeatable between LEDs.
In the display circuit for 4QD's Pro-150 controller the data is fed serially into a shift register which is fed from an on-board 5v supply. The LED display segments are common anode The conventional way of driving a two section 7 segment display is by using a resistor in each cathode to control the LED current. 16 segments = 16 resistors. A resistor array! simple. So we used circuit 1 to drop the 5v to a lower voltage, to voltage feed all the LED anodes in parallel. Actually, we didn't use a darlington transistor but a single NPN. This works fine but the complimentary darlington shown is more predictable.
You can of course use a voltage to current converter circuit so that LED brightness is proportional to input voltage.