这个网站http://www.cfishsoft.com/上面的软件界面很酷,就是模拟vista界面效果,大家知道用gdiplus怎么实现,小弟不懂,多指教。谢谢!最好给出实现思路或例子

解决方案 »

  1.   

    恩,这个软件界面具体用什么开发就不大清楚了,用Delphi设计界面工作量相对少些,做出的界面也比较好看,说不定用QT做的~~
      

  2.   

    我用VC做出效果了,不过有个问题了,代码贴出来让你们看看,
    Image img( L"bg.png" );
    BLENDFUNCTION blend = { AC_SRC_OVER, 0, 255, AC_SRC_ALPHA };
    CRect rc;
    GetWindowRect( &rc );
    CPoint ptWindow( rc.TopLeft() );
    CPoint ptSrc( 0, 0 );
    CSize  szWindow( img.GetWidth(), img.GetHeight() );
    HDC dcSrc = ::GetDC( NULL );
    HDC dcMem = ::CreateCompatibleDC( dcSrc );
    HBITMAP m_bp = ::CreateCompatibleBitmap( dcSrc, img.GetWidth(), img.GetHeight() );
    ::SelectObject( dcMem, m_bp ); Graphics grap( dcMem );
    grap.DrawImage( &img, 0, 0, img.GetWidth(), img.GetHeight() );
    Pen pen( Color( 255, 255, 0, 0 ) );
    grap.DrawEllipse( &pen, 0, 0, 50, 50 ); UpdateLayeredWindow( hWnd, dcSrc, &ptWindow, &szWindow, dcMem, &ptSrc, 0, &blend, ULW_ALPHA ); grap.ReleaseHDC( dcMem );
    ::ReleaseDC( 0, dcSrc );
    dcSrc = NULL;
    ::DeleteObject( m_bp );
    ::DeleteDC( dcMem );
    dcMem = NULL;
      

  3.   

    我用GDI+和UpdateLayeredWindow分层窗口api来做,不过Onpaint事件不能用了,放上去的控件显示不出来,
      

  4.   

    楼上的库能支持什么格式的图片,alpha通道支持吗,图片半透明和界面的半透明能支持吗?
    顶上去
      

  5.   

    to: nntt(blackman) ( ) 信誉:100  2006-7-21 9:21:20  得分: 0 
       
    楼上的库能支持什么格式的图片,alpha通道支持吗,图片半透明和界面的半透明能支持吗?
    顶上去好像是支持bmp格式的。alpha通道不知道支持不支持,即使不支持,想做半透明窗口,只要在程序中对窗口调用SetLayeredWindowAttributes就可以。
     
      

  6.   

    这个库不行,这个窗口层API的用法只有两种,有锯齿功能(圆的话)
      

  7.   

    to: nntt(blackman) ( ) 信誉:100  2006-07-24 11:50:00  得分: 0  
     
     
       这个库不行,这个窗口层API的用法只有两种,有锯齿功能(圆的话)
      
     
    好像圆角的图片做父窗口都有锯齿的,微软的MediaPlayer播放器都有。没办法消除的。等Vista出来后,窗口周围与后面窗口的背景做alpha混合可能能去掉。现在还没发现有能去掉的软件呢。
      

  8.   

    上面那段代码没有锯齿啊,用alpha通道技术