Have you considered using OpenGL or something like that?
Depending on the type of game engine, you could use buffer swapping where you have 2 "buffers" which are bitmaps with equal size to the window being drawn. You then use a background thread to draw a frame into buffer 1 and when done you flag buffer 1 as clean (meaning it is ready to be drawn to the screen) and buffer 2 as dirty (meaning it is not ready to be drawn to screen). While buffer 1 is being drawed to screen by your main thread, your background thread starts to build the next frame in the dirty buffer 2 and when done, buffer 2 is marked as clean and buffer 1 as dirty and so on. Whenever a buffer changes from dirty to clean, your background thread sends a message to the main thread which then draws the buffer to screen. This may seem cumbersome, but it is fast and it will prevent flickering.