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
  • 相关阅读:
    Word 2003 Excel 2003 的迟绑定(late binding) 方法 时空地图TimeGIS
    快手之友情链接 时空地图TimeGIS
    InfoVista.NET 概述 时空地图TimeGIS
    快手博客 时空地图TimeGIS
    快手文档 www.kuaishou.net 时空地图TimeGIS
    快手之Excel篇 www.kuaishou.net 时空地图TimeGIS
    InfoVista.NET Beta 时空地图TimeGIS
    中国互联网络发展状况统计报告2009年 时空地图TimeGIS
    http://wiki.kuaishou.net 时空地图TimeGIS
    快手影音 www.timegis.com 时空地图TimeGIS
  • 原文地址:https://www.cnblogs.com/jiailiuyan/p/4838448.html
Copyright © 2011-2022 走看看