If you're not after an ultra-fast application, you can use an auxiliary bitmap to draw the text - see attached demo. You first measure the size of the text, set the size of the aux bitmap accordingly, then copy the source image into the bitmap, draw the text and finally copy the aux bitmap back into the source image. In the demo I am using a TLazIntfImage for the source image because it is easier to convert to/from TBitmap than with TFPMemoryImage.