Hintergrundfarbe für eigene Controls ermitteln OHNE GetPixel

  • Hier eine Möglichkeit, mit der man die Hintergrundfarbe von eigenen* Controls ermitteln kann, ohne GetPixel** zu verwenden. Dabei sollen ganz unterschiedliche Controls berücksichtig werden, wie z.B. Label, Edit, Input, Button, ComboBox, usw.

    * Eigene Controls: Wie Bitnugger treffend bemerkt hat, kann man mit diesem Code nur die Hintergrundfarbe für Controls im eigenen Script ermitteln und nicht in fremden Anwendungen.

    ** GetPixel funktioniert nicht immer wie gewünscht, jenachdem welches Pixel man bei welchem Control ausliest. Wenn man das Pixel bei "0, 0" ausliest, kann das bei einem Label funktionieren, aber bei einem Button nicht. Macht man für den Button ein Offset für das Border, und ermittelt z.B. das Pixel bei "3, 3" (siehe EN Forum) funktioniert es evtl. bei einem Edit nicht, wenn der gelesene Pixel genau das Caret erwischt, usw.

    Wie Oscar treffend bemerkt hat, gibt es nur wenig Bedarf, die Hintergrundfarben im eigenen Script zu ermitteln, da man normalerweise weiß, welche Farben man verwendet. Somit poste ich den Code nach dem Motto: Besser eine Möglichkeit haben und nicht brauchen, als brauchen und nicht haben. 8o

    Im Anhang befindet sich ein Demo, das 4 Möglichkeiten zeigt, die Hintergrundfarbe zu ermitteln. 2 davon funktionieren sehr gut, die beiden anderen liefern nicht unbedingt das gewünschte Ergebnis, z.B. das oben erwähnte GetPixel. Den vorausgehenden Diskussion-Thread findet man hier.

    Edit: Der Code enthielt einen Abschnitt für das Freigeben des Brush-Objekts. Den Abschnitt habe ich entfernt, da ich auch nach langer Recherche nicht beurteilen kann, ob an dieser Stelle ein Freigeben nützt oder schadet. Auch das Demo habe ich entsprechend geändert und neu hochgeladen. Wenn jemand fundierte Informationen dazu hat, würd ich mich freuen, sie zu erfahren. :)