1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan
  5. Spezielles

Unterschied Icon/Image

  • Jac de Lad
  • 19. April 2021 um 19:01
  • Jac de Lad
    Meister
    Reaktionen
    132
    Beiträge
    1.657
    • 19. April 2021 um 19:01
    • #1

    Hallo,

    ich hoffe, dass ich mich richtig ausdrücken kann. Für die Ribbon.dll benötige ich ein bisschen Hilfe. Bilder kann ich problemlos mit profaninternen Funktionen laden und an die DLL weiterleiten. Wenn ich jedoch ein Icon erstelle (mittels Create("hIcon",...)), funktioniert das nicht. Ich weiß, das Icons und Bilder zum Teil unterschiedlich gehandhabt werden.

    Gibt es eine XProfan-interne Möglichkeit das kompatibel zu laden? Wenn ich hPic verwende geht die Transparenz flöten.

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)/PureBasic 6.00/RAD Studio 11 (Alexandria)/Perl 5.34.00/Python 3.10.0
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/46TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    Synology DS920+ mit 42TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 9 Pro (12GB/256GB)
    https://jacdelad.bplaced.net

  • H.Brill
    Stammuser
    Reaktionen
    483
    Beiträge
    1.178
    • 19. April 2021 um 20:36
    • #2

    Soll die DLL das Handle des Icons bekommen ?

    Schiebe das Icon mal in eine ImageListe und lese

    das Handle mit ImageList("GetIcon", imglist&, 0)

    so etwa :

    Code
    Cls
    Declare Handle img
    img = Create("ImageList", 32, 32)
    ImageList("AddIcon", img, Create("hIcon", "Gesicht"))
    
    DrawIcon img, 0, 100, 100
    Print "Handle des Icons : ", ImageList("GetIcon", img, 0)
    
    Waitkey
    DeleteObject img

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • Jac de Lad
    Meister
    Reaktionen
    132
    Beiträge
    1.657
    • 19. April 2021 um 20:48
    • #3

    Das Handle kommt an, das Ich kann ich inzwischen mit GetIconInfo() auslesen (einmal als 24-Bit-Bitmap und einmal als Alpha-Maske). Ich kann es jetzt auch schon anzeigen lassen, aber transparente Bereiche werden schwarz. Ich muss das in PureBasic lösen.

    Was mich total verwundert, ist dass es erst ging und jetzt plötzlich nicht mehr. Ich hab so viel an dem Ribbon geändert, aber immer nur in PureBasic getestet. Aus einmal ging es in XProfan nicht mehr (per DLL).

    XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)/PureBasic 6.00/RAD Studio 11 (Alexandria)/Perl 5.34.00/Python 3.10.0
    Ryzen 5800X/Gigabyte B550m DS3H/32GB RAM@3600MHz/Radeon HD7770 OC/Asus Xonar SE/46TB HDD+512GB Samsung 980 Pro+2TB Crucial SSD/28" Samsung 4k
    Synology DS920+ mit 42TB
    XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
    OnePlus 9 Pro (12GB/256GB)
    https://jacdelad.bplaced.net

  • H.Brill
    Stammuser
    Reaktionen
    483
    Beiträge
    1.178
    • 20. April 2021 um 20:14
    • #4

    Vielleicht hilft dir das weiter :

    Code
    Cls
    Declare Handle img, hpic
    MCls 32, 32, RGB(0, 0, 255) ' Transparenzfarbe
    hpic = Create("hIcon", "Gesicht")
    
    StartPaint -1
      DrawIcon hpic, 0, 0
    EndPaint
    hpic = Create("hPic", 0, "&MEMBMP")
    img = Create("ImageList", 32, 32)
    ImageList("Add", img, hpic)
    
    DrawIcon img, 0, 100, 100
    Print "Handle des Icons : ", ImageList("GetIcon", img, 0)
    
    Waitkey
    Alles anzeigen

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

  • p. specht
    Premium-Mitglied
    Reaktionen
    986
    Beiträge
    5.665
    • 23. April 2021 um 10:10
    • #5

    Gilt eigentlich die alte Prä-Win7-Regel noch, daß das linke obere Pixel eines Icons die Transparenzfarbe darstellt?

    HP255G7:Win10pro2.004,4*AMD Ryzen3200U@2.60GHz,6+2GB-RadeonVega/237GBSSD:intlDVDRW,3xUSB3 ext4TB-HDX,XProfanX3+Xasm/Xpse

  • H.Brill
    Stammuser
    Reaktionen
    483
    Beiträge
    1.178
    • 23. April 2021 um 19:37
    • #6

    Bei Icons weiß ich es nicht. Bei BMP siehe in der Profanhilfe :

    Zitat

    DrawPic

    1. DrawPic H, X, Y; N1[, N2]

    H : LongInt - Handle der Bitmap

    X,Y: Integer - Position, wo die Bitmap gezeichnet werden soll

    N1 : Integer - Kopiermodus (-1 = transparent)

    N2 : Longint - Transparente Farbe im Modus -1 (kann auch weggelassen werden)

    Die Bitmap mit dem Handle H wird an Position X,Y in Originalgröße dargestellt. N1 ist der Kopiermodus.

    N2 ist die Farbe, die beim Kopiermodus -1 (transparent) durchsichtig dargestellt wird. Fehlt diese Angabe wird die Farbe des limkesten unteren Pixels genommen.

    Alles anzeigen

    Aber vielleicht könnte man bei der Imageliste mit Sendmessage was machen.

    Code
    DEF &ILC_MASK $0001
    DEF &ILC_COLOR32 $0020
    SendMessage(imglist, &ILC_MASK|&ILC_COLOR32, 0, 0)

    Oder mit einer BMP mit DrawPic im Kopiermodus (-1).

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Windows 11

  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™