Je pense que tout ce que vous pouvez faire est de mesurer chaque pixel de l'image et de prendre en moyenne. Si c'est trop lent pour vos besoins, alors je suggère de prendre un échantillon de pixels uniformément répartis et en utilisant cela pour calculer une moyenne. Vous pouvez également limiter les pixels à la zone où vous devez dessiner le texte.
Vous pouvez charger l'image en tant que bitmap (http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx) et utiliser la méthode GetPixel pour obtenir réellement les valeurs de couleur.
L'évaluation de la luminosité dépend entièrement de vous. Je suggérerais une approche plus simple (disons juste en prenant la plus haute valeur de couleur) qui pourrait être meilleure car certains utilisateurs percevront la couleur différemment de la norme humaine (daltonisme, etc.).
Pourquoi -1 vote, qui l'a émis? Le code fonctionne bien! –
Pourquoi avez-vous besoin de créer 'tmpBmp' et de ne pas utiliser' bm' pour verrouiller les bits directement dedans? – sergtk
Pourquoi divisez-vous la moyenne de 255 à la fin? @ ʞᴉɯ – TheCoolFrood