No se si lo que te comento te puede ayudar.
Omito como guardar una imagen en una línea o registro de la base de datos ya que según dices esto lo hace bien.
Creo que puedes insertar un campo más en la tabla o fichero tipo MEMO sobre el que puedes actualizar todo aquello que has escrito o dibujado sobre la imagen, es decir, en un campo tienes el mapa de bits y en otro los comandos P ej.
Linea[10,20,40,60]
Texto[100,200,'Texto en imagen']
icono[50,30,c:iconoscamión.ico]
y así sucesivamente todo lo que se te ocurra.
Tendrás que implementar un intérprete de comandos que haga posible transformaar estos mandatos en lineas, textos, circulos, sopots etcetc sonbre la imagen, no se algo parecido a esto.
Public Sub Blinker(pictObject as object, macro as string)
dim comandos as variant
comandos=split(macro,";")
dim i as long
for i=lbound(comandos,1) to ubound(comandos,1)
select case lcase(left(comandos,instr(comandos,"[")-1)
case "linea"
'extraer las coordenadas de la línea de los corchetes y dibujarla a escala sobre la imagen
case "texto"
'idem texto
case "icono"
idem icono
end select
Desde luego el desarrollo es más complejo de lo que te escribo ya que si además quieres medir con la precisión de la foto deberás obligatoriamente de realizar un giro, traslación y homotecia de las coordenadas del panel, pero por aquí seguramente van los tiros....
Un saludo
-acalanto-
end sub