⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carousel.bas

📁 Powerbasic 对GDI 的操作 很漂亮的代码!
💻 BAS
📖 第 1 页 / 共 3 页
字号:
                           zInstance(), _             ' program instance handle
                           BYVAL 0)                   ' creation parameters
'   In case of image background stretch it to match the size of the graphic control
'   or center it when smaller than the view port.
    CALL ZI_SetProperty(gCtrl&, %ZI_FitToWindow, %ZI_QualityDefault)
'   Resize the control to macth the whole size of the parent window
    CALL zSetAnchorMode(gCtrl&, %ANCHOR_HEIGHT_WIDTH)

'   ___________________

    hBut = zFrameButton(hMain, (SK_FOLDER() + "Frame3D.png"), "", 619, 47, 158, 333, %ID_FRAMEBUTTON, 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_BOTTOM)
'   ___________________

    hBut = zStaticLabel(hMain, "Speed", 628, 55, 140, 15, %ID_LABEL_SPEED, SK_BTNTEXTCOLOR(), %BS_LABEL_LEFT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    hBut = zTrackbar(hMain, (SK_FOLDER() + "BTN_Thumb.png"), 628, 69, 140, 14, %ID_TRACK_SPEED, 1, 30, 4, SK_TRACKHICOLOR())
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Change the speed rotation")
    
    hBut = zStaticLabel(hMain, "Focal length", 628, 87, 140, 15, %ID_LABEL_SPEED, SK_BTNTEXTCOLOR(), %BS_LABEL_LEFT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    hBut = zTrackbar(hMain, (SK_FOLDER() + "BTN_Thumb.png"), 628, 101, 140, 14, %ID_TRACK_FOCAL, 1, 30000, 15000, SK_TRACKHICOLOR())
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Adjust the focal length")
    
    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "Marquee text", 627, 120, 110, 22, %ID_MARQUEE, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Show/Hide the marquee text effect")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "Variable opacity", 627, 141, 110, 22, %ID_OPACITY, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Enable/disable variable opacity")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "Wallpaper", 627, 162, 110, 22, %ID_BACKGROUND, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Hide or show image background")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "Use 3D depth", 627, 183, 110, 22, %ID_USE3D, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Enable or disable the 3D depth")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "Self rotation", 627, 204, 110, 22, %ID_SELFROTATION, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Enable or disable self rotation")

    hBut = zTrackbar(hMain, (SK_FOLDER() + "BTN_Thumb.png"), 755, 126, 16, 80, %ID_TRACK_Y, 100, -100, 50, SK_TRACKHICOLOR())
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Change location along Y axis")
    hBut = zStaticLabel(hMain, "Y", 758, 208, 16, 15, %ID_LABEL_Y, SK_BTNTEXTCOLOR(), %BS_LABEL_LEFT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)

    hBut = zPushButton(hMain, (SK_FOLDER() + "BTN_Push.png"), "Reset", 626, 229, 144, 28, %ID_BTN_RESET, SK_BTNTEXTCOLOR(), -1, 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Restaure to initial state")
'   ___________________

IF Vista() THEN
    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "AERO Crystal mode", 627, 271, 130, 22, %ID_AEROCRYSTAL, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Switch Skin display to CRYSTAL mode")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "AERO Blur mode", 627, 292, 130, 22, %ID_AEROBLUR, SK_BTNTEXTCOLOR(), 0)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Switch Skin display to BLUR mode")

    hBut = zCheckButton(hMain, (SK_FOLDER() + "BTN_Check.png"), "STANDARD mode", 627, 313, 130, 22, %ID_AERODISABLE, SK_BTNTEXTCOLOR(), 0)
    CALL zSetCheckButtonStatus(hBut, %TRUE)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Switch back to standard display mode")

    hBut = zStaticLabel(hMain, "Client zone opacity", 628, 342, 140, 15, %ID_GLASS_OPACITY_LABEL, SK_BTNTEXTCOLOR(), %BS_LABEL_LEFT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)

    CALL zSplitColorARGB(SK_AEROCOLOR(), Alpha, Red, Green, Blue)
    hBut = zTrackbar(hMain, (SK_FOLDER() + "BTN_Thumb.png"), 628, 357, 140, 14, %ID_TRACK_OPACITY, 0, 255, Alpha, SK_TRACKHICOLOR())
    CALL zSetAnchorMode(hBut, %ANCHOR_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "To change client opacity (AERO must be On)")
END IF

    hBut = zButImage(hMain, (SK_FOLDER() + "BTN_Pause.png"), 673, 403, %ID_BTN_PAUSE, 0)
    CALL zGetImageSize(zGetButImageProperty(hBut), imgW, imgH): imgW = imgW \ 5
    CALL ShowWindow(zGetMainItem(%ID_BTN_PAUSE), %SW_HIDE): CALL zSetZorder(zGetMainItem(%ID_BTN_PAUSE), %HWND_BOTTOM)
    CALL zSetAnchorMode(hBut, %ANCHOR_BOTTOM_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Pause carousel animation")

    hBut = zButImage(hMain, (SK_FOLDER() + "BTN_Play.png"), 673, 403, %ID_BTN_PLAY, 0)
    CALL zGetImageSize(zGetButImageProperty(hBut), imgW, imgH): imgW = imgW \ 5
    CALL zSetAnchorMode(hBut, %ANCHOR_BOTTOM_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Play carousel animation")

    hBut = zButImage(hMain, (SK_FOLDER() + "BTN_Left.png"), 618, 415, %ID_LEFTBUTTON, 0)
    CALL zGetImageSize(zGetButImageProperty(hBut), imgW, imgH): imgW = imgW \ 5
    CALL zSetAnchorMode(hBut, %ANCHOR_BOTTOM_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Play carousel in clock wise mode")

    hBut = zButImage(hMain, (SK_FOLDER() + "BTN_Right.png"), 722, 415, %ID_RIGHTBUTTON, 0)
    CALL zGetImageSize(zGetButImageProperty(hBut), imgW, imgH): imgW = imgW \ 5
    CALL zSetAnchorMode(hBut, %ANCHOR_BOTTOM_RIGHT)
    CALL zSetZorder(hBut, %HWND_TOP)
    CALL zCreateToolTip(hBut, "Play carousel in counter clock mode")

'   // Change default LED's anchor mode from top right to top center
    CALL zSetAnchorMode(GetDlgItem(hMain, %ID_LED), %ANCHOR_RIGHT)
    CALL zSetZorder(GetDlgItem(hMain, %ID_LED), %HWND_TOP)

'   // Use the Skin's name for caption
    CALL zSetCTLText(hMain, (PARSE$(SK_AUTHOR(), $zLim, 1)))

END SUB

'// Main window procedure
FUNCTION WndProc(BYVAL hWnd AS LONG, BYVAL Msg AS LONG, BYVAL wParam AS LONG, BYVAL lParam AS LONG) EXPORT AS LONG
    LOCAL ps AS PAINTSTRUCT
    LOCAL rc AS RECT
    LOCAL nRet, wP, hDC, hDCmem AS LONG
    LOCAL Alpha, Red, Green, Blue AS BYTE

    STATIC IsMoving AS LONG

    SELECT CASE LONG Msg
    CASE %WM_GETMINMAXINFO
         LOCAL pMM AS MINMAXINFO PTR
         pMM = lParam
         @pMM.ptMinTrackSize.x = zMinTrackSizeX(0)
         @pMM.ptMinTrackSize.y = zMinTrackSizeY(0)

    CASE %WM_COMMAND
         IF zButtonSysCommand(hWnd, wParam) THEN FUNCTION = 0: EXIT FUNCTION

         IF gBlinkCount THEN CALL ButtonBlink(%ID_BTN_Play, 1) '// Stop it

         SELECT CASE LONG LO(INTEGER, wParam)

         CASE %ID_BTN_PLAY
              CALL PlayCarousel()

         CASE %ID_BTN_PAUSE
              CALL ShowWindow(zGetMainItem(%ID_BTN_PAUSE), %SW_HIDE): CALL zSetZorder(zGetMainItem(%ID_BTN_PAUSE), %HWND_BOTTOM)
              CALL ShowWindow(zGetMainItem(%ID_BTN_PLAY), %SW_SHOW): CALL zSetZorder(zGetMainItem(%ID_BTN_PLAY), %HWND_TOP)
              gAnimate = 0

         CASE %ID_LEFTBUTTON
              gMoveToLeft = -1
              CALL PlayCarousel()

         CASE %ID_RIGHTBUTTON
              gMoveToLeft = 0
              CALL PlayCarousel()

         CASE %ID_BTN_RESET
            ' Setup Speed default
              CALL zSetTrackValue(zGetMainItem(%ID_TRACK_SPEED), %Speed_default)
            ' Setup Focus default
              CALL zSetTrackValue(zGetMainItem(%ID_TRACK_FOCAL), %Focus_default)
            ' Setup Y default
              CALL zSetTrackValue(zGetMainItem(%ID_TRACK_Y), %Y_default)

         CASE %ID_MARQUEE
              IF zGetCheckButtonStatus(zGetMainItem(%ID_MARQUEE)) THEN
	         CALL ZD_ShowObject(%ID_OBJECT_TEXT, %ZD_SHOW)
              ELSE
	         CALL ZD_ShowObject(%ID_OBJECT_TEXT, %ZD_HIDE)
              END IF

         CASE %ID_BACKGROUND
              IF zGetCheckButtonStatus(zGetMainItem(%ID_BACKGROUND)) THEN
                 CALL ZI_SetFromFile(zGetMainItem(%ID_CTRL), zsExePath() + "back.jpg")
              ELSE
                 CALL ZI_SetFromFile(zGetMainItem(%ID_CTRL), zsExePath() + "No_Picture.png")
              END IF

         CASE %ID_SELFROTATION
              UseRotate& = zGetCheckButtonStatus(zGetMainItem(%ID_SELFROTATION))
              'UseRotate& = SendMessage(GetDlgItem(hWnd, %ID_SELFROTATION), %BM_GETCHECK, 0, 0)
              FOR K& = LBOUND(gSpriteData) TO UBOUND(gSpriteData)
                  IF UseRotate& = 0 THEN
                     gSpriteData(K&).hBitmap = ZI_CreateMirrorBitmapFromFile(gSpriteData(K&).ImageName, bmW&, bmH&)
                  ELSE
                     gSpriteData(K&).hBitmap = ZI_CreateBitmapFromFile(gSpriteData(K&).ImageName, bmW&, bmH&)
                  END IF
                  CALL ZD_DrawBitmapToCtrl(zGetMainItem(%ID_CTRL), gSpriteData(K&).xPos, gSpriteData(K&).yPos, _
                                           gSpriteData(K&).hBitmap, &HFFFFFFFF, gSpriteData(K&).ID, %ZS_VISIBLE)
              NEXT
   
         CASE %ID_AEROCRYSTAL
              IF zGetCheckButtonStatus(zGetMainItem(%ID_AEROCRYSTAL)) THEN
                 CALL zSplitColorARGB(SK_AEROCOLOR(), Alpha, Red, Green, Blue)
                 CALL zAEROCOLOR(zColorARGB(zGetTrackValue(zGetMainItem(%ID_TRACK_OPACITY)), RGB(Red, Green, Blue)), %WRITE)
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE), %FALSE)
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AEROBLUR), %FALSE)
                 CALL zAEROEMULATE(%TRUE, %WRITE)
                 CALL zAEROBLURLEVEL(0, %WRITE)
                 CALL SetTimer(hWnd, %AERO_TIMER, SK_AEROTIMERDELAY(), %NULL)

                 CALL zUSEVISTABLUR(%FALSE, %WRITE)
                 CALL zUSEVISTACRYSTAL(%TRUE, %WRITE)
                 '//CALL zTEXTRENDERING(%TextRenderingHintAntiAlias, 1)

              ELSE
                 '//CALL zTEXTRENDERING(%TextRenderingDefault, 1)
                 CALL KillTimer(hWnd, %AERO_TIMER)
                 CALL zAEROEMULATE(%FALSE, %WRITE)

                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE), %TRUE)

                 CALL zUSEVISTABLUR(%FALSE, %WRITE)
                 CALL zUSEVISTACRYSTAL(%FALSE, %WRITE)
              END IF
              CALL GetWindowRect(hWnd, rc)
              CALL zMoveBackground(rc.nLeft, rc.nTop)
              CALL zUpdateWindow(hWnd, 0)
         CASE %ID_AEROBLUR
              IF zGetCheckButtonStatus(zGetMainItem(%ID_AEROBLUR)) THEN
                 CALL zSplitColorARGB(SK_AEROCOLOR(), Alpha, Red, Green, Blue)
                 CALL zAEROCOLOR(zColorARGB(zGetTrackValue(zGetMainItem(%ID_TRACK_OPACITY)), RGB(Red, Green, Blue)), %WRITE)
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE), %FALSE)
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AEROCRYSTAL), %FALSE)
                 CALL zAEROEMULATE(%TRUE, %WRITE)
                 CALL zAEROBLURLEVEL(6, %WRITE)
                 CALL SetTimer(hWnd, %AERO_TIMER, SK_AEROTIMERDELAY(), %NULL)

                 CALL zUSEVISTACRYSTAL(%FALSE, %WRITE)
                 CALL zUSEVISTABLUR(%TRUE, %WRITE)
                 '//CALL zTEXTRENDERING(%TextRenderingHintAntiAlias, 1)

              ELSE
                 '//CALL zTEXTRENDERING(%TextRenderingDefault, 1)
                 CALL KillTimer(hWnd, %AERO_TIMER)
                 CALL zAEROEMULATE(%FALSE, %WRITE)

                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE), %TRUE)

                 CALL zUSEVISTABLUR(%FALSE, %WRITE)
                 CALL zUSEVISTACRYSTAL(%FALSE, %WRITE)

              END IF
              CALL GetWindowRect(hWnd, rc)
              CALL zMoveBackground(rc.nLeft, rc.nTop)
              CALL zUpdateWindow(hWnd, 0)
         CASE %ID_AERODISABLE
              IF zGetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE)) THEN
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AEROBLUR), %FALSE)
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AEROCRYSTAL), %FALSE)
                 CALL zAEROEMULATE(%FALSE, %WRITE)
                 '//CALL zTEXTRENDERING(%TextRenderingDefault, 1)
                 CALL KillTimer(hWnd, %AERO_TIMER)

                 CALL zUSEVISTABLUR(%FALSE, %WRITE)
                 CALL zUSEVISTACRYSTAL(%FALSE, %WRITE)

                 CALL GetWindowRect(hWnd, rc)
                 CALL zMoveBackground(rc.nLeft, rc.nTop)
                 CALL zUpdateWindow(hWnd, 0)
              ELSE
                 CALL zSetCheckButtonStatus(zGetMainItem(%ID_AERODISABLE), %TRUE)
              END IF
         CASE %ID_TRACK_OPACITY
              IF SK_AEROEMULATE() THEN
                 CALL zSplitColorARGB(SK_AEROCOLOR(), Alpha, Red, Green, Blue)
                 CALL zAEROCOLOR(zColorARGB(lParam, RGB(Red, Green, Blue)), %WRITE)
                 CALL GetWindowRect(hWnd, rc)
                 CALL zMoveBackground(rc.nLeft, rc.nTop)
                 CALL zUpdateWindow(hWnd, 0)
              END IF
         END SELECT

    CASE %WM_SIZE
         IF zComposited() THEN lRes& = zBeginDeferWindowPos(hWnd, 0)
         CALL zDrawBackground()
         CALL EnumChildWindows(hWnd, CODEPTR(AnchorEnum), lRes&)
         'CALL zUpdateWindow(hWnd, 0)
         IF zComposited() THEN CALL zEndDeferWindowPos(hWnd, lRes&)

    CASE %WM_SETTEXT
'        // Windows please do your job first.
         FUNCTION = DefWindowProc(hWnd, Msg, wParam, lParam)
'        // Update caption
         CALL zPaintBackground()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -