The 28-year-old has agreed a three-year contract with Blues after scoring 37 goals in 165 appearances for the west London club.
The last of them was in their 2-2 draw at Sheffield United on 17 August, but he was not involved in Saturday’s home game against Wayne Rooney’s Plymouth Argyle, which also ended 2-2.
Dykes has dropped a level from the Championship to League One to join a Birmingham side, who, having been installed as promotion favourites, have made a good start, taking seven points from their first three games.
“The club has a clear aim for where they want to go in the future,” Dykes told Bluestv.
“They are ambitious and that is like myself as a player.
“I want to get to the top and I am hoping that can be with Birmingham. There are quality players here and it is a top-class club.”