WPF九宫格HLSL版
偶遇需要再WPF里面处理九宫格,因不喜截图缩放,即写成了HLSL的Effcect
sampler2D input : register(s0); /// <summary>The float of the Left.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Left : register(C0); /// <summary>The float of the Top.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Top : register(C1); /// <summary>The float of the Right.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Right : register(C2); /// <summary>The float of the Bottom.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Bottom : register(C3); /// <summary>The float of the Width.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Width : register(C4); /// <summary>The float of the Height.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float Height : register(C5); /// <summary>The float of the ShowWidth.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></defaultValue>
float ShowWidth : register(C6); /// <summary>The float of the ShowHeight.</summary>
/// <minValue></minValue>
/// <maxValue></maxValue>
/// <defaultValue></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 = - (- 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 = - (- uv.y) * ShowHeight / Height;
} return tex2D(input, float2(x ,y)) ;
}
WPF九宫格HLSL版的更多相关文章
- WPF快速精通版
命名空间: xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:U ...
- C# WPF 嵌入网页版WebGL油田三维可视化监控
0x00 楔子 最近做的一个项目,是一个油田三维可视化监控的场景编辑和监控的系统,和三维组态有些类似,不过主要用于油田上. 效果如下图所示: 首先当然是上模型,设计人员跟进. 有了相关的模型,使用我们 ...
- 采用WPF开发第二版OFD阅读器,持续完善中,敬请期待!
本人研究OFD多年,采用C#和QT开发了一系列ofd相关软件.在这些产品中,阅读器始终占据着非常重要的位置.可以说,阅读器是直接面向最终客户的产品.是集OFD各类知识之大成的产品.市面上的阅读器产品林 ...
- GMap.NET实现电子围栏功能(WPF版)
前言 GMap.NET是一个强大.免费.跨平台.开源的.NET控件.分为WPF和winform版.GMap.NET的基本知识不做过多介绍,本文主要介绍如何使用该控件实现电子围栏功能. 电子围栏主要有两 ...
- WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码
原文:WPF 像素着色器入门:使用 Shazzam Shader Editor 编写 HLSL 像素着色器代码 HLSL,High Level Shader Language,高级着色器语言,是 Di ...
- CefSharp初识--把网页移到桌面
在开发中我们可曾有过这样的需求,将某个网页嵌入到.Net应用中来,但Winform自带的web browser不怎么理想.CefSharp可以让我们在.Net应用中嵌入一个Chromium.它提供了W ...
- DevExpress 2015.2发布 看看有哪些更新
下面是besy翻译的部分重要更新,要查看全部更新细节请访问英文官网. | 下载DevExpress 2015.2 Diagram Control 新的DevExpress Diagram Contro ...
- Open Source
资源来源于http://www.cnblogs.com/Leo_wl/category/246424.html RabbitMQ 安装与使用 摘要: RabbitMQ 安装与使用 前言 吃多了拉就是队 ...
- wpf版扫雷游戏
近来觉得wpf做出来的界面很拉风,自己也很喜欢搞些小游戏,感觉这做出来的会很炫,很装逼,(满足自己的一点小小的虚荣心)于是就去自学,发现感觉很不错,可是属性N多,太多了,而且质料也少,很多不会用,只会 ...
随机推荐
- Table of Contents - jBPM
Getting Started jBPM Installer Eclipse 安装 jBPM 插件 jBPM Core
- JQuery Mobile 实战一
今天我们来使用JQuery Mobile来开发一个web mobile app. 要实现的如下所示效果: 开始: 第一步:添加JS包等引用,直接去官网下载最新的JQuery Mobile 包,http ...
- sql将表中的某个字段进行排序
. update tempTable set field1 = rownum from( select field1, ROW_NUMBER() over(order by fieldId) rown ...
- Part 52 Attributes in C#
- JavaScript之动画2
在JavaScript动画中,我们调用setInterval函数(setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象),值得注意的是:setInterval它设置的时 ...
- shell获取本地ip的三种方法
第一种方法:ifconfig|grep inet |awk '{print $2}'|sed '2d'|awk -F : '{print $2}'第二种方法:ifconfig|grep inet|se ...
- 北大ACM(POJ1013-Counterfeit Dollar)
Question:http://poj.org/problem?id=1013 问题点:排除+验证. Memory: 244K Time: 16MS Language: C++ Result: Acc ...
- C# 中怎么将string转换成int型
int intA = 0;1.intA =int.Parse(str);2.int.TryParse(str, out intA);3.intA = Convert.ToInt32(str);以上都可 ...
- python:笔记for循环中的else
我们常常会在for循环遍历一个序列或者字典后,接着语句else,很多新手会误以为是判断执行else后面的 代码,其实不然,for循环里面也不存在判断,而已执行完遍历的对象后,再执行else后面的代码. ...
- java中Map,List与Set的区别
Set,List,Map的区别 java集合的主要分为三种类型: Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类 ...