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
  • 相关阅读:
    直接插入排序
    合并排序--分治法思想
    scanf printf函数返回值
    转自CSDN,关于状态机
    关于制表符
    网上找的一篇博文,原文搞错了,应该是 ,本文已改正!——回车CR和换行line feed
    再看c语言之getchar/putchar
    使用FL2440之问题1
    Java:String、StringBuffer和StringBuilder的区别
    编译哈工大语言技术平台云LTP(C++)源码及LTP4J(Java)源码
  • 原文地址:https://www.cnblogs.com/jiailiuyan/p/4838448.html
Copyright © 2011-2022 走看看