Ver Mensaje Individual
  #2  
Antiguo 08-03-2009
Avatar de DarkMan
DarkMan DarkMan is offline
Miembro
 
Registrado: jul 2006
Posts: 102
Reputación: 18
DarkMan Va por buen camino
Bueno, en realidad no es una tarea muy compleja. Para esto necesitas tener dos mapas de bits, uno temporal y otro que contenga el texto original, ambos del mismo tamaño y características.

Partiendo del mapa de bits original con X*Y pixeles, lo que tienes que hacer es ir recorriendo pixel por pixel y a la vez sus alrededores:
Código:
 
  P1 P2 P3
  P4 P5 P6
  P7 P8 P9
Si sabes que todos los pixeles que no forman parte del texto son de un color determinado, sólo tendrías que verificar si en algún punto alrededor de P5 el píxel tiene el color del texto. De ser así coloreas P5 en el mapa de bits temporal del color de borde que desees (usando dos mapas de bits evitas que al dibujar sobre el que estas analizando alteres el mismo proceso de análisis).

Básicamente el concepto es ese, quizás alguien te saque alguna función ya existente de windows que se encargue de realizar eso, pero yo tuve el mismo problema y la solución fue crear una función que realizase esto mismo.

La forma sencilla de hacerlo es utilizar la propiedad canvas.pixels, pero para textos largos resulta muy lento. La forma mas compleja es usar canvas.scanline, te llevará más tiempo comprender como funciona y como aplicarlo, pero el rendimiento aumenta considerablemente.

Un saludo y espero que lo hayas entendido.
__________________
"La recompensa de una buena acción está en haberla hecho"
Responder Con Cita