zoukankan      html  css  js  c++  java
  • 用渐变色填充背景(三)

    下面看两个示例,演示了如何使用GradientFill()
    其实很简单,参数一为每个顶点的位置、色彩定义,参数二为要使用的顶点数目,第三个参数为这些顶点如何绘制,第四个参数为绘制的次数,第五个参数为绘制模式
    如:vert,4,&gTRi,3,GRADIENT_FILL_TRIANGLE
    (1)绘制模式为:三角形GRADIENT_FILL_TRIANGLE
    (2)绘制的顶点数为4,就是说有4个顶点,这4个顶点的位置、色彩定义见第一个示例
    (3)然后就是绘制的次数为3次,分别为gTRi[0]、gTRi[1]、gTRi[2],
    而每一次给出三个顶点,绘制成三角形。三个顶点的顺序似乎不重要。

    第一个:
      CDCHandle dc(hDC);
      TRIVERTEX        vert [4] ;
      GRADIENT_TRIANGLE    gTRi[4];
      vert [0] .x       =  0;
      vert [0] .y       =  0;
      vert [0] .Red     =  0x0000;
      vert [0] .Green   =  0x0000;
      vert [0] .Blue    =  0x0000;
      vert [0] .Alpha   =  0x0000;

      vert [1] .x       =  350;
      vert [1] .y       =  0;
      vert [1] .Red     =  0x0000;
      vert [1] .Green   =  0x0000;
      vert [1] .Blue    =  0xff00;
      vert [1] .Alpha   =  0x0000;

      vert [2] .x       =  350;
      vert [2] .y       =  350;
      vert [2] .Red     =  0x0000;
      vert [2] .Green   =  0x0000;
      vert [2] .Blue    =  0xff00;
      vert [2] .Alpha   =  0x0000;

      vert [3] .x       =  0;
      vert [3] .y       =  350;
      vert [3] .Red     =  0xff00;
      vert [3] .Green   =  0xff00;
      vert [3] .Blue    =  0xff00;
      vert [3] .Alpha   =  0x0000;

      gTRi[0].Vertex1   = 1;
      gTRi[0].Vertex2   = 3;
      gTRi[0].Vertex3   = 0;

      gTRi[1].Vertex1   = 0;
      gTRi[1].Vertex2   = 2;
      gTRi[1].Vertex3   = 3;

      gTRi[2].Vertex1   = 1;
      gTRi[2].Vertex2   = 3;
      gTRi[2].Vertex3   = 2;

      gTRi[3].Vertex1   = 0;
      gTRi[3].Vertex2   = 2;
      gTRi[3].Vertex3   = 1;
      dc.GradientFill(vert,4,&gTRi,4,GRADIENT_FILL_TRIANGLE);

    第二个:

        if ( IsVertical() )
            {
            TRIVERTEX tv[] = { { rect.left, rect.top, 0xff00 },
                               { rect.left + m_cxyHeader, rect.bottom, 0, 0xff00 } };
            GRADIENT_RECT gr = { 0, 1 };

            dc.GradientFill ( tv, 2, &gr, 1, GRADIENT_FILL_RECT_V );
            }
        else
            {
            TRIVERTEX tv[] = { { rect.left, rect.top, 0xff00 },
                               { rect.right, rect.top + m_cxyHeader, 0, 0xff00 } };
            GRADIENT_RECT gr = { 0, 1 };

            dc.GradientFill ( tv, 2, &gr, 1, GRADIENT_FILL_RECT_H );

            rect.bottom = rect.top + m_cxyHeader;

            // draw title only for horizontal pane container
            dc.SaveDC();

            dc.SetTextColor ( RGB(255,255,255) );
            dc.SetBkMode ( TRANSPARENT );
            dc.SelectFont ( GetTitleFont() );

            rect.left += m_cxyTextOffset;
            rect.right -= m_cxyTextOffset;

            if ( m_tb.m_hWnd != NULL )
                rect.right -= m_cxToolBar;

            dc.DrawText ( m_szTitle, -1, &rect,
                          DT_LEFT | DT_SINGLELINE | DT_VCENTER | DT_END_ELLIPSIS );

            dc.RestoreDC(-1);
            }

  • 相关阅读:
    AI生万物,新世界的大门已敞开
    荣耀10带来AI版WPS,玩转潮酷新功能
    P20 旅行助手,从未有过的至尊私人导游服务!
    如何成为快手尬舞王?HUAWEI HiAI了解一下!
    golang中的接口实现(二)
    golang中的接口实现(一)
    new~mac os 给终端命令写alias(及其他常用命令)及软连接
    Java面试题精选
    干货 unity小贴士
    js数组插入指定位置元素,删除指定位置元素,查找指定位置元素算法
  • 原文地址:https://www.cnblogs.com/huqingyu/p/45639.html
Copyright © 2011-2022 走看看