Icon – drei Irrwege

Unsere Oberfläche muss in ihrer Auflösung den modernen Bildschirmen anpassen!

Die ganz wichtigen Kunden haben Bildschirme mit nahezu Apple Auflösung. Da kommen die kleinen 16 mal 16 Pixel großen Button nicht gut. Wenn Windows das automatisch anpasst, sieht das eckig und verschwommen aus. Ohne Anpassung sind die Schaltflächen so klein, dass kein Kunde sie findet.

Deswegen gilt es auf zu hübschen!

Der UX Designer hat schon skalierbare Icons für alle Button Bitmaps entworfen. Entscheidungsträger haben sich darüber versammelt und endgültige Versionen beschlossen.

Ich brauchte sie nur noch einzubauen. Das muss Pillepalle sein und ich wollte es nebenher erledigen.

Da wir Win32 API verwenden, muss ich die Icons zu Bitmaps im BMP Format konvertieren. Der UX Designer hat aus den Icons Bitmaps im PNG-Format in verschiedenen Auflösungen erzeugt.

Das einzige Problem war die Toolbar API. Hier kommen Imagelists zum Einsatz. Es galt die Bitmaps zu „Bitmapstripes“ zu verknüpfen.

Das sollte doch einfach sein. Was konnte da schiefgehen?

Ansatz ein: Python

Ich wollte das mit Python machen. Von PIL hatte ich schon etwas gelesen. Das konnte ich bei dieser Aufgabe in Ruhe ausprobieren. Tatsächlich fand sich Python 3.7 auf dem Entwicklungsrechner. Leider befinden wir uns hinter einem firewall und pip install ist nicht freigeschaltet. Da heißt es die wheels der Produkte zu finden.

Ich beschloss ein wenig zu surfen, welche Pakete genau zu verwenden waren. Hier fand ich eine Anleitung, die auf pillow, so heißt PIL heute, und numpy verwies. Numpy ging einfach zu installieren, pillow weigerte sich nachdrücklich.

Mir wurde das zu teuer. Vielleicht wäre es ja doch besser nach einem Werkzeug zu suchen, das das für mich machte. Wie haben das eigentlich die anderen gemacht?

Imagick

Kollegen meinten, sie würden C# verwenden. Da ist das alles kein Problem. Die C++ Kollegen waren auf dem anderen Gang und ich fand imagick. Ein Befehl und schon hatte ich eine Streifen mit den richtigen Bitmaps. Sie sahen richtig schön aus. Der Hintergrund war durchsichtig. Im BMP Format sah das immer noch schön aus.

MFC kann leider nur das BMP-Format 3 ohne Transparenz und keine moderenen Bildformate.

Der durchsichtige Hintergrund sah nun gar nicht mehr schön aus. Ich beschloss die die Doku genau zu lesen.

Ikons laden

Das loadimage kann auch Icons laden!

Mit ein paar Befehlen lud ich die Icons direkt hintereinander. Sogar der durchsichtige Hintergrund machte keine Probleme mehr. Nur das ausgegraute Icon ging nicht. Die Toolbar API gibt gar nicht her, dass ein Button ausgegraut ist. Sie arbeitet mit Imagelisten, die aktive und inaktive Buttons darstellen.

Ich müsste nun aktive und inaktive Icons haben. Das wollte ich mir nicht nebenher antun.

An der Stelle gab ich auf und schrieb eine Email an die C++ Kollegen. Wie hatten sie das Problem gelöst?

Die Lösung

Sie haben bei ihrem UX-Designer die „Bitmapstripes“ bestellt! So einfach geht das in einer grossen Umgebung.

Gelernt habe ich so nebenher, dass, wie immer, einfache Dinge nicht immer einfach sind.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert