美文网首页
duilib窗体阴影偏移情况

duilib窗体阴影偏移情况

作者: 李里里Riss | 来源:发表于2017-04-02 14:14 被阅读0次

duilib支持窗体阴影,有算法和图片两种

算法阴影的效果不行,处理效果太老,目前比较流行的是高斯模糊后的阴影效果。在iMac里早已系统内置,对于Windows,尤其是duilib这种自绘的库,只能自己去画阴影。

Duilib设置窗体阴影

使用算法阴影.

xml配置:

shadow="true" shadowsize="20" shadowdarkness="20" shadowsharpness="30" shadowposition="0,6"

效果如下图,阴影的渐变还是有所欠缺,所以目前推荐使用图片的阴影,自由度很高


Paste_Image.png
使用图片阴影

先准备个阴影图片,图片尺寸不限,因为可以通过设置点九图数据来拉伸

shadow.png

xml配置

showshadow="true" shadowimage="shadow.png" shadowcorner="30,20,30,40"

其中,shadowcorner就是点九图信息,根据自己图片设置,数字分别是阴影到边框的距离,如阴影图我是用30半径高斯模糊,y偏移10,所以设置30,20,30,40。

效果如图,基本上可以模拟你想要的任何种类的阴影,前期是你会做阴影图-_-

Paste_Image.png

重要!

在使用图片时会出现各种拉伸、偏移的情况,这里需要修改下源码UIShadow.cpp文件。

Paste_Image.png

很明显是尺寸设置有误。
三个地方:

//update函数中,原代码还使用m_nSize计算宽高,这样需要使用点九图中的信息计算。
nShadWndWid = WndRect.right - WndRect.left + m_rcShadowCorner.left + m_rcShadowCorner.right;
nShadWndHei = WndRect.bottom - WndRect.top + m_rcShadowCorner.top + m_rcShadowCorner.bottom;

//两个移动窗口的消息中,移动出现偏移情况
//ParentProc函数中
//窗体位置改变(移动窗体结束的消息)
   case WM_WINDOWPOSCHANGED:
       RECT WndRect;
       GetWindowRect(hwnd, &WndRect);
       if (pThis->m_bIsImageMode) {
       //修改此处
           SetWindowPos(pThis->m_hWnd, 0, WndRect.left - pThis->m_rcShadowCorner.left, WndRect.top - pThis->m_rcShadowCorner.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
       }
       else {
           SetWindowPos(pThis->m_hWnd, 0, WndRect.left + pThis->m_nxOffset - pThis->m_nSize, WndRect.top + pThis->m_nyOffset - pThis->m_nSize, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
       }
       break;
//窗体移动
   c   case WM_MOVE:
       if(pThis->m_Status & SS_VISABLE)
       {
           RECT WndRect;
           GetWindowRect(hwnd, &WndRect);
           if (pThis->m_bIsImageMode) {
               //修改此处
               SetWindowPos(pThis->m_hWnd, 0, WndRect.left - pThis->m_rcShadowCorner.left, WndRect.top - pThis->m_rcShadowCorner.top, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
           }
           else {
               SetWindowPos(pThis->m_hWnd, 0, WndRect.left + pThis->m_nxOffset - pThis->m_nSize, WndRect.top + pThis->m_nyOffset - pThis->m_nSize, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
           }
       }
       break;

其实都是在m_bIsImageMode中,把m_nSize换成m_rcShadowCorner的参数。

相关文章

  • duilib窗体阴影偏移情况

    duilib支持窗体阴影,有算法和图片两种 算法阴影的效果不行,处理效果太老,目前比较流行的是高斯模糊后的阴影效果...

  • Duilib窗体阴影改进

    duilib支持了窗体阴影,有算法阴影和图片阴影两种,但是算法阴影的效果不尽人意,参数设置也不能理解 之前写过一篇...

  • 14-CSS盒子阴影和文字阴影

    盒子阴影 如何给盒子添加阴影box-shadow: 水平偏移 垂直偏移 模糊度 阴影扩展 阴影颜色 内外阴影; 注...

  • CSS3--盒子阴影

    盒子阴影 格式box-shadow:水平偏移 垂直偏移 模糊度 阴影扩展 阴影颜色 内外阴影; 注意点盒子的阴影分...

  • text-shadow

    设置文字阴影 语法 X-Offset:表示阴影的水平偏移距离,其值为正值时阴影向右偏移,反之向左偏移;Y-Offs...

  • 2D转换模块

    盒子阴影和文字阴影 1.如何给盒子添加阴影 1box-shadow: 水平偏移 垂直偏移 模糊度 阴影扩展 阴影颜...

  • 20-盒子阴影和文字阴影

    如何给盒子添加阴影box-shadow: 水平偏移 垂直偏移 模糊度 阴影扩展 阴影颜色 内外阴影;box-sha...

  • 《JS原理、方法与实践》- canvas作图(八)- 阴影

    属性值: shadowOffsetX: 阴影的水平偏移距离 shadowOffsetY: 阴影的竖直偏移距离 sh...

  • css3-阴影、背景尺寸、渐变

    一、文字阴影 text-shadow: X轴偏移量 Y轴偏移量 阴影模糊半径 阴影颜色 二、盒子阴影 box-...

  • [iOS Swift] UIButton的阴影设置

    代码先行 iOS中阴影的概念 阴影组成的三要素 x偏移量:阴影相对于图形本身在水平方向的偏移量。 y偏移量:阴影相...

网友评论

      本文标题:duilib窗体阴影偏移情况

      本文链接:https://www.haomeiwen.com/subject/lddgottx.html