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

📄 draw3d.c

📁 TN-kernel内核针对LPC系列ARM7处理器和S3C44B0X重新定制好的源代码包。内含Nano-X GUI。
💻 C
字号:
#include "../../include/windows.h"
#include "../../include/wintools.h"

/*
 * WIN Draw Library
 *        Draw3dShadow - draws a shadow with bottom-left and top-right missing
 *        Draw3dBox - draws a complete shadow
 *        Draw3dInset - draw a 2 line 3d inset
 *        Draw3dOutset - draw a 2 line 3d outset
 */

/*
 * Draw3dShadow
 *         NOINDENT_BLACK        T=white, B=black
 *         NOINDENT_GRAY        T=white, B=dkgray
 *         INDENT_BLACK        T=black, B=white
 *         INDENT_GRAY                T=dkgray, B=white
 *
 *        TTTTTTTTTTTTTT
 *        T             B
 *        T             B
 *         BBBBBBBBBBBBBB
 */
void WINAPI Draw3dShadow(HDC hDC,int x,int y,int w,int h,COLORREF crTop,
                                                             COLORREF crBottom)
{
        HPEN        hPenTop, hPenBottom, holdPen;

        hPenTop = CreatePen( PS_SOLID, 1, crTop);
        hPenBottom = CreatePen( PS_SOLID, 1, crBottom);
        holdPen = SelectObject( hDC, hPenTop);
        MoveToEx( hDC, x, y+h-2, NULL);
        LineTo( hDC, x, y);                                /* left side*/
        LineTo( hDC, x+w-1, y);                                /* top side*/

        SelectObject( hDC, hPenBottom);
        MoveToEx( hDC, x+w-1, y+1, NULL);
        LineTo( hDC, x+w-1, y+h-1);                        /* right side*/
        LineTo( hDC, x, y+h-1);                                /* bottom side*/

        SelectObject( hDC, holdPen);
        DeleteObject( hPenTop);
        DeleteObject( hPenBottom);
}

/*
 * Draw3dBox
 *
 *        TTTTTTTTTTTTTTB
 *        T             B
 *        T             B
 *        BBBBBBBBBBBBBBB
 */

void WINAPI Draw3dBox(HDC hDC,int x,int y,int w,int h,COLORREF crTop,
                                                            COLORREF crBottom)
{
        HPEN                hPenTop, hPenBottom, holdPen;

        hPenTop = CreatePen( PS_SOLID, 1, crTop);
        hPenBottom = CreatePen( PS_SOLID, 1, crBottom);
        holdPen = SelectObject( hDC, hPenTop);
        MoveToEx( hDC, x, y+h-2, NULL);
        LineTo( hDC, x, y);                                /* left side*/
        MoveToEx( hDC, x, y, NULL);
        LineTo( hDC, x+w-1, y);                                /* top side*/

        SelectObject( hDC, hPenBottom);
        MoveToEx( hDC, x+w-1, y, NULL);
        LineTo( hDC, x+w-1, y+h-1);                        /* right side*/
        LineTo( hDC, x-1, y+h-1);                        /* bottom side*/

        SelectObject( hDC, holdPen);
        DeleteObject( hPenTop);
        DeleteObject( hPenBottom);
}

/*
 * Draw 2 line deep 3d inset
 */
void WINAPI Draw3dInset(HDC hDC,int x,int y,int w,int h)
{
        Draw3dBox(hDC, x, y, w, h,
                GetSysColor(COLOR_BTNSHADOW), GetSysColor(COLOR_BTNHIGHLIGHT));
        ++x; ++y; w -= 2; h -= 2;
        Draw3dBox(hDC, x, y, w, h,
                GetSysColor(COLOR_WINDOWFRAME), GetSysColor(COLOR_3DLIGHT));
}

/*
 * Draw 2 line deep 3d outset
 */
void WINAPI Draw3dOutset(HDC hDC,int x,int y,int w,int h)
{
        Draw3dBox(hDC, x, y, w, h,
                GetSysColor(COLOR_3DLIGHT), GetSysColor(COLOR_WINDOWFRAME));
        ++x; ++y; w -= 2; h -= 2;
        Draw3dBox(hDC, x, y, w, h,
                GetSysColor(COLOR_BTNHIGHLIGHT), GetSysColor(COLOR_BTNSHADOW));
}

/*
 * Draw 1 line pushed down rectangle
 */
void WINAPI Draw3dPushDown(HDC hDC, int x, int y, int w, int h)
{
        Draw3dBox(hDC, x, y, w, h, GetSysColor(COLOR_BTNSHADOW),
                GetSysColor(COLOR_BTNSHADOW));
}

/*
 * Draw either 3d up or down depending on state
 */
void WINAPI Draw3dUpDownState(HDC hDC, int x, int y, int w, int h, BOOL fDown)
{
        if (fDown)
                Draw3dPushDown(hDC, x, y, w, h);
        else Draw3dOutset(hDC, x, y, w, h);
}

void WINAPI Draw3dUpFrame(HDC hDC, int l, int t, int r, int b)
{
        RECT        rc;
        HBRUSH        hbr;

        SetRect(&rc, l, t, r, b);
        Draw3dBox(hDC, rc.left, rc.top,
                rc.right-rc.left, rc.bottom-rc.top,
                GetSysColor(COLOR_3DLIGHT),
                GetSysColor(COLOR_WINDOWFRAME));
        InflateRect(&rc, -1, -1);
        Draw3dBox(hDC, rc.left, rc.top,
                rc.right-rc.left, rc.bottom-rc.top,
                GetSysColor(COLOR_BTNHIGHLIGHT),
                GetSysColor(COLOR_BTNSHADOW));
        InflateRect(&rc, -1, -1);

        hbr = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
        FillRect(hDC, &rc, hbr);
        DeleteObject(hbr);
}

⌨️ 快捷键说明

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