Tkachuk scored in his fifth straight game, on a setup by Johnny Gaudreau, to put Calgary up 1-0 at 7:41 of the first period.
Dillon Dube extended the lead to 2-0 at 12:16 when he slid a backhand five-hole.
Mangiapane scored on a rebound to give the Flames a 3-0 lead at 16:18. It was his 18th goal in 56 games this season to set an NHL career high. He scored 17 goals in 68 games last season.
"Obviously disappointing that our season ends there, but it's nice to get a new career-high there and hopefully next year I can keep building on it," he said. "You always want to improve every year. Hopefully next year I build on it and keep continuing to grow."
Ritchie made it 4-0 with a wrist shot at 5:14 of the second period.
Horvat cut it to 4-1 with a power-play goal at 8:34 when he one-timed a pass from Boeser, and Miller made it 4-2 when he tipped Boeser's point shot at 9:32.
Tkachuk scored on a pass from Gaudreau to put the Flames up 5-2 at 10:29. Gaudreau ended the season with 10 points (one goal, nine assists) in a five-game point streak, and 22 points (six goals, 16 assists) in his final 16 games.
Mikael Backlund scored at 14:31 of the second, but the Canucks used a coach's challenge for offside and the call on the ice was overturned.
Connor Mackey scored on a rebound for his first NHL goal in his sixth game at 3:29 of the third period for the 6-2 final.
"I definitely have envisioned that," Mackey said. "It's pretty special, right? You envision a full house and scoring a nice goal and the crowd is going crazy, but I'll take what I can get. It was a great confidence booster going into the summer."
NOTES: Dube left the game after being hit by Canucks defenseman Travis Hamonic in the second period and did not return because of concussion protocol. ... Flames forward Matthew Phillips, a Calgary native, had two shots on goal in 14:19 of ice time in his NHL debut. ... Canucks defenseman Alexander Edler and forward Tanner Pearson (personal) were each a healthy scratch.