myślę wszystko, co można zrobić, to zmierzyć każdy piksel w obrazie i wziąć średnią. Jeśli jest to zbyt wolne dla twoich celów, sugerowałbym wzięcie równomiernie rozłożonej próbki pikseli i użycie jej do obliczenia średniej. Możesz także ograniczyć piksele do obszaru, w którym musisz narysować tekst.
Możesz załadować obraz jako bitmapę (http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx) i użyć metody GetPixel, aby uzyskać wartości kolorów.
Sposób oceny jasności zależy wyłącznie od Ciebie. Sugerowałbym prostsze podejście (powiedzmy, że przyjmując najwyższą wartość koloru) może faktycznie być lepsze, ponieważ niektórzy użytkownicy będą postrzegać kolor inaczej niż ludzka norma (ślepota kolorów itp.).
Dlaczego -1 głos, który go rzucić? Kod działa poprawnie! –
Dlaczego musisz utworzyć 'tmpBmp' i nie używać' bm' do blokowania bitów bezpośrednio w nim? – sergtk
Dlaczego dzielisz średnią na 255? @ ʞᴉɯ – TheCoolFrood