Bug sur une simple opération arithmétique ?
Bonjour,
Je viens de tomber sur un os, j'avoue que je n'arrive pas à comprendre quelle erreur j'aurais pu faire, et j'en viens à supposer un bug du compilateur.
Alors avant d'envoyer un ticket, je viens voir si quelqu'un ne verrait pas une bourde de ma part dans le code, pourtant simple, que je vous soumet.
Le but est simplement de fixer la couleur de texte d'un contrôle quelconque, en fonction de la couleur du fond, de manière à ce qu'on ait une lisibilité minimale.
En clair, si la couleur du fond est foncée on met le texte en blanc, sinon en noir.
Mais voilà, à l'exécution, je me retrouve avec une erreur System.OverflowException*: 'L'opération arithmétique a provoqué un dépassement de capacité.'
Le code est le suivant :
Code:
1 2 3 4 5 6 7 8 9
| Function set_TextColor_From_BackGround(BGColor As Color) As Color
If ((BGColor.B + BGColor.R + BGColor.G) / 3 <= 128) Then ' Si couleur foncée
Return Color.White ' Texte blanc pour qu'il reste lisible
Else ' Si couleur claire
Return Color.Black ' Texte en noir
End If
End Function |
Et l'erreur est provoquée par la simple addition (BGColor.B + BGColor.R + BGColor.G), sachant que BGColor.B et BGColor.R valent 128, et BGColor.G vaut 255... (BGColor => "{Name=ff80ff80, ARGB=(255, 128, 255, 128)}" )
D'avance merci