Existe y es muy sencillo. El problema debe ser separado en dos partes.
1. Dibujar en el canvas
2. Guardar en un blob
Para dibujar en el canvas solo debes una TImage y trazar sobre su objeto Canvas utilizando sus funciones cada vez que se producen los eventos del ratón OnMouseMove, OnMouseDown, OnMouseUp;
La verdad, no podría darte una técnica exacta, ya que en mi caso implementé colorear y no trazar, pero es igual de sencillo.
Te recomiedo conocer las funciones y propiedades de Canvas que encierran todo lo que tiene que ver con el DC (device context) para imágenes.
Al Timage lo puedes crear en tiempo de diseño con el componente TImage en componentes adicionales, o crearlo en tiempo de ejecución.
imgPizarra:= TImage.Create(Self);
donde Self sería el handle del form en el que se encontraría el bitmap.
Creo que Pixels cambia el color de cada pixel de la imagen, por lo que te serviría en la captura de OnMouseMove.
imgPizarra.Canvas.Pixels[XPos, YPox]:= clBlack;
donde imgPizarra es de tipo TImage.
La clase TImage puede ser instanciada como cualquier otra, incluso puedes cargar una imagen Bitmap en blanco u otro color con LoadFromFile.
imgPizarra.Picture.Bitmap.LoadFromFile('nombre.bmp');
En vez de clBlack, clRed, clBlue, etc. puedes utilizar la función RGB, la cual te permite convertir cualquier combinación RGB a su correspondiente número entero. clAAA, son valores para colores conocidos.
Para guardar el bitmap en un campo blob de Firebird, tienes que definir somo BLOB subtype 0 al definir el campo,
Para poder almacenar el bitmap, debes asignar el bitmap al bitmap del campo imagen correspondiente y salvarlo.
El componente TDBImage de los componentes de Interbase debería ser suficiente, pero en caso de querer guardarlo a partir de un TImage, deberás hacer uso de TStream.
El ejemplo que podría poner aquí es bastante engorroso porque convierte a JPEG en ambos sentidos para almacenar el bitmap.
Espero no haberme salteado nada importante y no equivocarme mucho y que esto te sirva de algo.
Saludos.