zoukankan      html  css  js  c++  java
  • WPF九宫格HLSL版

      偶遇需要再WPF里面处理九宫格,因不喜截图缩放,即写成了HLSL的Effcect

    sampler2D input : register(s0);
    
    /// <summary>The float of the Left.</summary>
    /// <minValue>1</minValue>
    /// <maxValue>20</maxValue>
    /// <defaultValue>20</defaultValue>
    float Left : register(C0);
    
    /// <summary>The float of the Top.</summary>
    /// <minValue>1</minValue>
    /// <maxValue>20</maxValue>
    /// <defaultValue>20</defaultValue>
    float Top : register(C1);
    
    /// <summary>The float of the Right.</summary>
    /// <minValue>1</minValue>
    /// <maxValue>20</maxValue>
    /// <defaultValue>20</defaultValue>
    float Right : register(C2);
    
    /// <summary>The float of the Bottom.</summary>
    /// <minValue>1</minValue>
    /// <maxValue>20</maxValue>
    /// <defaultValue>20</defaultValue>
    float Bottom : register(C3);
    
    /// <summary>The float of the Width.</summary>
    /// <minValue>5</minValue>
    /// <maxValue>200</maxValue>
    /// <defaultValue>46</defaultValue>
    float Width : register(C4);
    
    /// <summary>The float of the Height.</summary>
    /// <minValue>5</minValue>
    /// <maxValue>200</maxValue>
    /// <defaultValue>46</defaultValue>
    float Height : register(C5);
    
    /// <summary>The float of the ShowWidth.</summary>
    /// <minValue>50</minValue>
    /// <maxValue>1200</maxValue>
    /// <defaultValue>750</defaultValue>
    float ShowWidth : register(C6);
    
    /// <summary>The float of the ShowHeight.</summary>
    /// <minValue>50</minValue>
    /// <maxValue>1200</maxValue>
    /// <defaultValue>700</defaultValue>
    float ShowHeight : register(C7);
    
    float4 main(float2 uv : TEXCOORD) : COLOR 
    { 
    
        float realwidth = uv.x * ShowWidth;
        float realheight = uv.y * ShowHeight;
    
        //Set color of no scale
        float x = uv.x * ShowWidth / Width;
        float y = uv.y * ShowHeight / Height;
    
        //Scale X
        if(realwidth >= Left && realwidth <= (ShowWidth - Right))
        {
            x = ((uv.x * ShowWidth - Left) / (ShowWidth - Left - Right) * (Width - Left - Right) + Left) / Width;
        }
        // Real color of max x
        else if(realwidth > (ShowWidth - Right) )
        {
            x = 1 - (1- uv.x) * ShowWidth / Width;
        }
    
        //Scale Y
        if(realheight >= Top && realheight <= ShowHeight - Bottom )
        {
            y = ((uv.y * ShowHeight - Top) / (ShowHeight - Top - Bottom) * (Height - Top - Bottom) + Top ) / Height;
        }
        //Real color of max y
        else if(realheight > ShowHeight - Bottom )  
        {
            y =  1 - (1- uv.y) * ShowHeight / Height;
        }
    
        return tex2D(input, float2(x ,y)) ;
    }
    View Code
  • 相关阅读:
    【区间DP&&记忆化搜索】乘法游戏
    洛谷P1608路径统计
    2021省选游记
    涂色计划P4170
    01迷宫及路径记录(DFS&&BFS)
    [YBTOJ递推算法强化训练4]序列个数
    C++关于string 的优先队列以及重载运算符
    浅谈C++STL容器
    集合的划分
    图的表示
  • 原文地址:https://www.cnblogs.com/jiailiuyan/p/4838448.html
Copyright © 2011-2022 走看看