Al código de seoane añadiría, ya que siempre suelo hacerlo, la garantía de que el recurso será liberado:
Código Delphi
[-]
ObtenerRecurso;
try
HacerCualquierCosa;
YDaleQueTeDale;
finally
LiberarElRecurso;
end;
Sobre lo que comentas con respecto de la velocidad, valdrá la pena que hagas tus pruebas, pero la comparación de imágenes suele ir lenta... quizas haya forma de optimizar eso.
También se me ocurre que, dado que el DeviceContext que tomas es el del escritorio... ¿no valdría tomarlo una vez al inicio y reutilizarlo siempre?. Así te evitas el tiempo de tomarlo y de liberarlo, que francamente desconozco si será poco o mucho.
Hasta luego.