Wir nutzen seit gestern eigene Icons für Elemente aus einigen Musikrotationen.
Nun mussten wir feststellen, dass nun das PFL (Klick auf Icon) bei diesen Elementen nicht mehr funktioniert. :-[
Der Fehler ist etwas versteckt, habe gemerkt, dass das PFL mit einem eigenen Icon eigentlich funktioniert.
Wird nun jedoch eine Playlist geladen, welche Elemente mit Bilder hat, werden diese Bilder zwar angezeigt, jedoch ist auf diesen Elmenten kein PFL-Klick möglich.
Ich habe die Ursache gefunden. Ist leider etwas blöd zu beheben:
Wenn ein Element ein eigenes Bild hat, wird IPlaylistItemPicture.Draw aufgerufen. Das bekommt ein Rectangle übergeben, und zwar den zur Verfügung stehenden Platz. Dort wird das Bild dann zentriert und evtl. verkleinert reingemalt. Die genaue Position wird dafür aufwändig berechnet. Leider gibt die Methode nicht den tatsächlichen verwendeten Bereich zurück. Die Playlist weiß also nicht, wo genau das Icon sich befindet, und kann die Klicks nicht auswerten.
Könntest du damit leben, dass ein Klick irgendwo in die Spalte das PFL auslöst, auch wenn es vielleicht ein paar Pixel an dem Icon vorbei ist?
Wieso, kann ich ein Bild manuell einfügen, und über dieses Bild anschliessend pixelgenau PFLen. Doch beim laden der Playlist mit Bildern, klappt es nicht mehr diese geladenen Elemente zu PFLen.
Habe noch etwas probiert: Neue Playlist -> Einige MP3 hineingezogen -> Einem Element ein Bild verpasst -> Playlist gespeichert -> gespeicherte Playlist wieder anhängen = Nun habe ich 2 Elemente mit einem Bild in der Playlist. Das 1. kann ich PFLen, das 2. nicht
Der Bug ist doch, dass mAirList sich die Koordinaten des Bildes nicht merkt, wenn es ein selbstdefiniertes ist.
Wenn du das Icon nachträglich änderst, hat mAirList noch die Koordinaten des Standard-Icons im Cache, und der Klick funktioniert (in genau dem Bereich, wo das Standard-Icon vorher war). Wenn du von vornherein eine Playlist mit Icons lädst, stehen gar keine Koordinaten im Cache, und der Klick wird ignoriert.
Nein, das wäre ja nur kreatives Ausnutzen der näheren Umstände des Bugs
Ich habe ja schon oben geschrieben, wie ich das gelöst habe: Wenn man ein benutzerdefiniertes Bild hat, wird einfach das gesamte Feld für den Klick freigegeben.
[quote=“Torben, post:9, topic:5751”]Nein, das wäre ja nur kreatives Ausnutzen der näheren Umstände des Bugs
Ich habe ja schon oben geschrieben, wie ich das gelöst habe: Wenn man ein benutzerdefiniertes Bild hat, wird einfach das gesamte Feld für den Klick freigegeben.[/quote]
Auch so :
48x48 ist richtig, wobei mAirList die Bilder automatisch skaliert - kann aber sein, dass die Skalierung unterschiedlich ist, wenn es ein elementspezifisches Icon ist.
Wird es in der richtigen Größe angezeigt, wenn du das PNG als Ersatz für ein Standard-Icon einbindest (z.B. als “icon_file.png” im images-Ordner)?