首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎样让任意形状窗体看上去有凹凸感-江湖救急该怎么解决

2012-02-29 
怎样让任意形状窗体看上去有凹凸感-----江湖救急 - C++ Builder / Windows SDK/API1、用windows编了个任意

怎样让任意形状窗体看上去有凹凸感-----江湖救急 - C++ Builder / Windows SDK/API
1、用windows编了个任意形状的子窗体,但子窗体没有凹凸感,想作成按钮一样,怎么做。

2、像按钮一样,按下鼠标左键,让子窗体变成按下的图样。

[解决办法]
给他画边界啊。
最简单的画边界方法就是给它贴图。
[解决办法]
1 这个可以加载图片,让窗体有木头花纹,等各种效果,要求你的美工要不错。

[解决办法]
美工化图,比用编程解决方便.
编程方法,简单点就是边框有阴影,让眼睛产生视觉差,产生凸凹的感觉.
[解决办法]
平常在窗体向上的边白色,向下的边用黑色。
按下鼠标时向上的边用黑色,向下的用白色。
[解决办法]
用图片确实简单,上面的各位高手都说过了

不过偶感觉还是重画边界比较好啊!

C/C++ code
    if (m_hWnd)    {        CBrush Brush(RGB(66,162,202));        CBrush* pOldBrush = pDC->SelectObject(&Brush);                CBrush BrushLine(RGB(94, 248, 255));                CRect rtWnd, rtTitle, rtButtons;        GetWindowRect(&rtWnd);         //取得标题栏的位置        rtTitle.left = GetSystemMetrics(SM_CXFRAME);        rtTitle.top = GetSystemMetrics(SM_CYFRAME);        rtTitle.right = rtWnd.right - rtWnd.left - GetSystemMetrics(SM_CXFRAME);        rtTitle.bottom = rtTitle.top + GetSystemMetrics(SM_CYSIZE);        CPoint point;        //填充顶部框架        point.x = rtWnd.Width();        point.y =  GetSystemMetrics(SM_CYSIZE) +GetSystemMetrics(SM_CYFRAME)+20;        pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);        pOldBrush=pDC->SelectObject(&BrushLine);        pDC->PatBlt(0,0,point.x,2,PATCOPY);        //pDC->PatBlt(0,0,point.y,1,PATCOPY);        pDC->PatBlt(0,point.y,point.x,2,PATCOPY);        CBrush *Bru=pDC->SelectObject(pOldBrush);        //填充左侧框架        point.x = GetSystemMetrics(SM_CXFRAME) + 1;        point.y = rtWnd.Height();        //pDC->PatBlt(0, 0, point.x, point.y, PATCOPY);        pOldBrush=pDC->SelectObject(Bru);        pDC->PatBlt(0,0,3,point.y,PATCOPY);        pDC->SelectObject(pOldBrush);        //填充右侧框架        point.x = GetSystemMetrics(SM_CXFRAME) + 1;        point.y = rtWnd.Height();        pOldBrush=pDC->SelectObject(Bru);        pDC->PatBlt(rtWnd.Width()-point.x+2, 0,4,point.y-5,PATCOPY);        pDC->SelectObject(pOldBrush);        //填充底部框架        point.x = rtWnd.Width();         point.y = GetSystemMetrics(SM_CYFRAME) + 53;        pDC->PatBlt(0, rtWnd.Height()-point.y, point.x, point.y, PATCOPY);        //准备画XP风格按钮        CBitmap* pBitmap = new CBitmap;        CBitmap* pOldBitmap;        CDC* pDisplayMemDC=new CDC;        pDisplayMemDC->CreateCompatibleDC(pDC);        //重画关闭button        rtButtons.left = rtTitle.right - 40;        rtButtons.top = rtTitle.top;        rtButtons.right = rtButtons.left + 40;        rtButtons.bottom = rtButtons.top + 19;        pBitmap->LoadBitmap(IDB_CLOSE_NORMAL);        pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);        pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);        pDisplayMemDC->SelectObject(pOldBitmap);        m_rtButtExit = rtButtons;        m_rtButtExit.OffsetRect(rtWnd.TopLeft());         pBitmap->DeleteObject();        //重画最大化/恢复button        rtButtons.right = rtButtons.left - 3;        rtButtons.left = rtButtons.right - 23;        if (IsZoomed())            pBitmap->LoadBitmap(IDB_MAX);        else            pBitmap->LoadBitmap(IDB_MAX_NORMAL);        pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);        pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);        pDisplayMemDC->SelectObject(pOldBitmap);        m_rtButtMax = rtButtons;        m_rtButtMax.OffsetRect(rtWnd.TopLeft());        pBitmap->DeleteObject();        //重画最小化button        rtButtons.right = rtButtons.left - 3;        rtButtons.left = rtButtons.right - 27;        pBitmap->LoadBitmap(IDB_MIN_NORMAL);        pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);        pDC->BitBlt(rtButtons.left, rtButtons.top, rtButtons.Width(), rtButtons.Height(), pDisplayMemDC, 0, 0, SRCCOPY);        pDisplayMemDC->SelectObject(pOldBitmap);        m_rtButtMin = rtButtons;        m_rtButtMin.OffsetRect(rtWnd.TopLeft());        pBitmap->DeleteObject();        ReleaseDC(pDisplayMemDC);        delete pDisplayMemDC;        delete pBitmap;    } 

热点排行