Con mucho, la forma más fácil de hacer esto (así que probablemente la mejor manera, a menos que esté realmente limitado para el rendimiento) es tener dos copias de sus sprites.
- La versión regular
- Una versión "gorda", sin color, básicamente una versión blanca de su sprite X, muchos píxeles "más gordos" que el original.
Dibuja todo tu objeto usando la versión "gorda", luego dibuja la versión normal en la parte superior.
Al hacer que la versión "gorda" sea blanca, puede usar el tinte de color incorporado de SpriteBatch para cambiar el color de selección dinámicamente.
Para generar su versión "gorda", le recomiendo escribir una extensión de Content Pipeline que pueda tomar automáticamente sus sprites originales, leer su canal alfa, crear un nuevo canal alfa muestreando el canal alfa máximo en la imagen original X-muchos píxeles alrededor de cada píxel, y ajuste RGB = (1,1,1).
Tendrá que asegurarse de que todos sus sprites tengan un borde transparente suficiente para agregar el contorno (puede verificar esto en el procesador de contenido e incluso hacer espacio si es necesario).
Si solo tiene algunos sprites, puede usar un buen editor de imágenes (GIMP, Photoshop) y hacerlo a mano: canal alfa a selección, expandir selección, selección a alfa, rellenar canales de color blanco.