Icongröße im Programm ändern

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Information: Wir verlosen 9 Kinderbüchlein von Microsoft Mein Papa arbeitet bei Microsoft. Und ich darf mit!

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Icongröße im Programm ändern

      Ich habe ein Programm, welches Icons per Create("Icon" auf das Hauptfenster zeichnet. Die haben aber eine deifinierte Größe, in meinem Fall 32*32. Kann man die Größe beeinflussen?
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Keiner? Vielleicht kann Roland noch 2 Parameter für die Größe einführen, das ist doch sicher nur ein Static mit Icon. Wäre auch eine gute Erweiterung für DrawIcon...
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • In der Hilfe steht zwar, daß DrawSizedPic() auch .ico unterstützt,
      tut es aber nicht. Wenn man das Handle eines Icons übergibt,
      gibt es einen Fehler -> Falscher Parameter (1. x-Koordinate).

      Ich habe es jetzt mal über einen Umweg probiert :
      Zuerst das Icon in eine SpeicherBitmap kopieren
      (StartPaint - 1). Und dann als Bitmap wieder raus.

      Quellcode

      1. indow 600, 400
      2. Declare Handle ico1, ico2
      3. ico1 = Create("hIcon", "A")
      4. Mcls 100, 100
      5. StartPaint - 1
      6. DrawIcon ico1, 10, 10
      7. EndPaint
      8. ico2 = Create("hSizedPic", 0, "&MEMBMP", 100, 100; 0)
      9. DrawSizedPic ico2, 100, 100 - 400, 400; 0
      10. WaitKey
      Alles anzeigen
      Ist zwar im Moment etwas verzerrt.
      Experimentiere mal damit. Vielleicht bekommst du ja was brauchbares heraus.
    • Hm, das geht zwar grundsätzlich, aber das Icon wird dabei vergrößert. Icons sind oft in mehreren Größen vorhanden, damit umgeht man das Strecken.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Um das zu vermeiden, mußt du wohl eine vorhandene Icongröße nehmen.
      Das Strecken jedenfalls geht auch mit der API nicht besser.

      Quellcode

      1. /*
      2. https://msdn.microsoft.com/de-de/library/windows/desktop/ms648065(v=vs.85).aspx
      3. BOOL WINAPI DrawIconEx(
      4. _In_ HDC hdc,
      5. _In_ int xLeft,
      6. _In_ int yTop,
      7. _In_ HICON hIcon,
      8. _In_ int cxWidth,
      9. _In_ int cyWidth,
      10. _In_ UINT istepIfAniCur,
      11. _In_opt_ HBRUSH hbrFlickerFreeDraw,
      12. _In_ UINT diFlags
      13. );
      14. */
      15. Def DrawIconEx(9) !"USER32", "DrawIconEx"
      16. Window 800, 600
      17. Declare Handle ico1, ico2, hWin&, x%, y%, dx%, dy%
      18. x% = 10
      19. y% = 100
      20. dx% = 8
      21. dy% = 8
      22. ico1 = Create("hIcon", "A")
      23. WhileLoop 1, 10
      24. DrawIconEx(%HDC, x%, y%, ico1, (dx% * &LOOP), (dy% * &LOOP), 0, 0, $0003)
      25. Inc x%, (dx% * &LOOP) + 10
      26. EndWhile
      27. WaitKey
      Alles anzeigen
      Hier muß man statt des Fensters (%HWnd) den Device Context angeben (%HDC).
    • DrawIconEx sieht vielversprechend aus, das werde ich mal probieren. Danke.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • ich lese es mir mal im MSDN durch sobald ich Zeit habe.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Icongrösse ändern

      Hallo Jac
      Habe mir vor einger Zeit diesen Code geschrieben:

      Quellcode

      1. PROC SETZE_WAHL_ICON
      2. DECLARE b_icon&
      3. PARAMETERS b_handle&,b_icon$,ix%,iy%,ib%,ih%
      4. b_icon& = CREATE("ICON",b_handle&,b_icon$,0,0)
      5. SetWindowPos b_icon& =0,0-0,0;0
      6. SetWindowPos b_icon& =ix%,iy%-ib%,ih%;0
      7. ENDPROC
      Parameter sind:
      Fenster oder Button, Icon-Name, StartX, StartY, Breite, Höhe
      Die Profan_icons können getauscht werden und die Grösse bleibt erhalten.
      Hoffe, ich konnte helfen
    • Hallo Altprofaner,
      das probiere ich auch mal, aber ich glaube da wird auch jr gestreckt. Mein Icon liegt in der EXE in verschiedenen Größen vor und ich will das Icon einer definierten Größe laden. Die profaninternen Funktionen nutzen aber immer die im System voreingestellte Größe.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Beide Varianten funktionieren, aber sowohl DrawIconEx als auch die Funktion von Altprofaner stretchen nur das Icon der Standardgröße.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Jac de Lad schrieb:

      Hallo Altprofaner,
      das probiere ich auch mal, aber ich glaube da wird auch jr gestreckt. Mein Icon liegt in der EXE in verschiedenen Größen vor und ich will das Icon einer definierten Größe laden. Die profaninternen Funktionen nutzen aber immer die im System voreingestellte Größe.
      Kann sein, daß Windows hier immer die Standardgröße verwendet.
      Wäre es nicht einfacher, hier einen Iconeditor (z.B. icoFX gibt es sogar noch als Freeware)
      zu verwenden ? Da könnte man aus einem Icon eine Bitmap machen, oder bei mehreren
      eine ImageList, wie die TOOLBAR32.
      Bitmaps sind evtl. besser zu handhaben. Wenn man dann noch einen Resourcenhacker
      zu Hilfe nimmt, kann man sogar einzelne Bilder austauschen bzw. einfügen. Die Arbeit muß
      man halt zweimal machen : im Interpreter und in der Runtime.
    • Hallo Heinz.
      Bitmap ist blöd, wegen der Transparenz. Den Interpreter nutze ich eh nie, das ist kein Problem...
      Ich muss mal schauen was passiert, wenn ein Icon nur in einer Größe, nämlich der von mir gewünschten, in der EXE vorliegt.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Also, ich hab jetzt mal das A-ico in einen Iconeditor geladen
      und es vergrößert und unter einem anderen Resourcennamen
      wieder gespeichert.

      Es wird dann auch mit richtiger Größe angezeigt.

      Ein Icon ist halt ein Pixelbild und wird halt, wenn es größer
      wird, noch pixeliger. Aber, wenn du das Icon in der für dich
      richtigen Größe ja hast und es dir gefällt, dürfte deinem
      Vorhaben nichts mehr im Wege stehen.
    • Ich hab die Icons in der Exe ersetzt. Die neuen kommen in 4 Größen von 16*16 bis 64*64. Wenn ich das gewünschte Icon nur als 64*64 speicher dann gehts vielleicht.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Warum nimmst Du denn, die von mir genannte API nicht? Da kannste sagen, welche grösse Du möchtest und wenn die dann enthalten ist, bzw. ansonsten die am nächsten kommt. Ansonsten kann man ICONS auch über den Namen bzw. Nummer laden (FindResource, LockResource usw.).
      Gruß Thomas
      Meine Hardware
      Programmieren ist wie Küssen: Man kann darüber reden, man kann es beschreiben, aber man weiß erst was es bedeutet, wenn man es getan hat.
      ComputerInfo für PPF
    • Hat nicht funktioniert.
      XProfan-Semiprofi (XProfan X4+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 6 256GB Midnight Black
      http://jacdelad.bplaced.net
    • Hallo,
      Da es in XProfan meist mehrere Möglichkeiten gibt,
      habe ich das ganze mal mit einer ImageListe probiert.
      Da man beim Erstellen einer Imageliste ja auch die
      Bildgröße vorgeben muß, habe ich die Icons mal
      dorthin kopiert (hier mal auf 64 X 64 Pixel) :

      Quellcode

      1. Declare Handle ilist, ico
      2. Declare Long x, y, String Namen[21]
      3. Namen[0] = "A"
      4. Namen[1] = "BAUM"
      5. Namen[2] = "COMPUTER"
      6. Namen[3] = "DOS"
      7. Namen[4] = "DRUCKER"
      8. Namen[5] = "EDITOR"
      9. Namen[6] = "EIMER"
      10. Namen[7] = "EIS"
      11. Namen[8] = "FILEICON"
      12. Namen[9] = "GESICHT"
      13. Namen[10] = "KNOPF1"
      14. Namen[11] = "KNOPF2"
      15. Namen[12] = "MUELL"
      16. Namen[13] = "MUENZE"
      17. Namen[14] = "PROFAN"
      18. Namen[15] = "SAND"
      19. Namen[16] = "STEIN"
      20. Namen[17] = "TEXT"
      21. Namen[18] = "WASSER"
      22. Namen[19] = "WEG"
      23. Namen[20] = "WINDOWS"
      24. Window 800, 600
      25. ilist = Create("ImageList", 64, 64)
      26. x = 50
      27. y = 50
      28. WhileLoop 0, 20
      29. ico = Create("hIcon", Namen[&LOOP])
      30. ImageList("AddIcon", ilist, ico)
      31. EndWhile
      32. WhileLoop 0, 20
      33. DrawIcon ilist, &LOOP, x, y
      34. If x > 500
      35. x = 50
      36. Inc y, 100
      37. Else
      38. Inc x, 100
      39. EndIf
      40. EndWhile
      41. WaitKey
      42. DeleteObject ilist
      43. End
      Alles anzeigen
      Das Ergebnis sieht schon mal ganz passabel aus. Die ImageListe scheint
      da auf einem anderen Wege die Bilder zu vergrößern.
      Vielleicht ist das ja eine Option für dich.

      PS: Wegen der Transparenz kann man ja auch
      ImageList("GetICon",...)
      nehmen. Das müßtest du noch ausprobieren.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von H.Brill ()