随笔分类 - net / WPF
摘要:自定义控件 自定义控件是我比较陌生的一个主题。我好久没练习过wpf了,需要巩固记忆。我想了一会儿,打开动漫之家,忽然觉得这个看漫画的图片浏览控件有意思。于是特地花了一天做了这个图片控件。我原本以为很容易,但实际上并不简单。这个图片浏览控件比我想象中要难许多,有技术上的难题,也有逻辑上的难题。好在最后
阅读全文
摘要:没有顶点着色器的遗憾 WPF不支持顶点着色器,只支持像素着色器。这可能是为了入门简便考虑,让使用者专心在像素着色器上。毕竟会的越少,钻得越深。 我去瞧了一下ShaderToy,上面似乎也只提供了像素着色器。 缺少顶点着色器的控制,一些效果就不好实现了,比如顶点动画,3D图形渲染。 但我发现了一种叫R
阅读全文
摘要:疑问 着色器只能访问控件可视区域内的像素,但是阴影特效出现在控件可视区域外部,这是怎么实现的? 我想起来WPF中有个叫做装饰器的东西,然而阅读了一下文档,似乎不行 放置在装饰器层中的任何内容将呈现在设置的其他任何样式的顶部。 换言之,装饰器始终以可见的方式位于顶部,无法使用 z 顺序重写。 而且装饰
阅读全文
摘要:
由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格 使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1 float4 main(f
阅读全文
由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格 使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1 float4 main(f
阅读全文
摘要:概念类比 范畴 CPU GPU 二进制文件 .exe .cso / .ps 二进制指令 机器码 CSO(shader指令) 助记符 汇编 SL 高级语言 C# HLSL 高级语言文件 .cs .hlsl / .fx 高级语言编译器 csc.exe fxc.exe API .NET API Direc
阅读全文
摘要:wpf使用了Directx,所有才能够进行3D编程。 比较方便的是,3D模型也是声明式的,就像普通控件一样。 由于3D控件也是声明式的,所以还可以利用binding改变其属性 控件 Viewport3D 这是一个3D视口,所有的3D控件都要放在这里面。 3D空间的基本元素是 相机、 光源、 对象。
阅读全文
摘要:关于三大类控件和画笔的关系,可以用这张图说明 可以看出,除了形状具有边框,为什么其他控件的边框要通过border装饰实现 图中还没填满,理论上还有几种类型控件
阅读全文
摘要:VisualState基本使用 首先搭建一个自定义控件,继承自ContentControl,自动生成了这些文件 由于CustomButton在Custom命名空间中,所以改一下xaml中的引用 xmlns:local="clr-namespace:WpfApp1.Custom" 定义部件和视觉状态
阅读全文
摘要:按照上一节所讲,我已经对布局系统又所了解。接下来我就实现一个布局控件FixedColumnGrid。 1.基础版 布局控件机制如下,FixedColumnGrid将子控件按照水平排列,每行满两列后换行。每个控件大小相同,高度固定为50。 第一步,先重载测量和排列方法 protected overri
阅读全文
摘要:问题不在于我们做错了什么,之前还好好的,我们什么都没做,就报错了。这完全不是我们的问题。 InitializeComponent其实就是读取xaml文件,然后利用反射来生成和执行一些东西 如果这里报错,说明反射过程中出错了,比如代码里面添加某个东西,xaml中去使用 但是设计器的实时运行出了点堵塞,
阅读全文
摘要:wpf布局递归的调用到底是怎样的顺序?我一直挺模糊。 按照继承顺序。 已知: 1.1.UIElement:声明了Measure 1.2.UIElement:声明了MeasureCore,返回Size(0,0) 1.3.UIElement:Measure调用了this.MeasureCore 2.1.
阅读全文
摘要:这是我无意中发现的,xaml中设置的是依赖属性而不是包装器,所以我们可以直接在注册依赖属性那里设置回调,触发某个控件重绘,比如本身或父控件重绘。 xaml设计器就会实时更新 1 // !!!由于xaml解析是直接通过这里进行的,不通过包装器,所以通过设置这里的回调,可以使得在编辑xaml自定义依赖属
阅读全文
摘要:我使用WPF默认的frame <Frame Style="{DynamicResource FrameStyle1}" x:Name="frame" Height="80" NavigationUIVisibility="Visible"/> 然后添加几次导航 Task.Run(async () =
阅读全文
摘要:这个问题困扰了我一天,最后下了个MaterialDesign的demo,看了下他的源码,才恍然大悟,原来很简单。 我原来的设想是在expander的ControlTemplate设置触发器,在IsExpanded属性变化时根据ContentPresenter控件的高度来做动画,但这就涉及到取属性,在
阅读全文
摘要:如果使用CollectionViewSource绑定到控件上,会导致默认选择第一项,而使用List,SelectedItem就默认为空。 要避免默认选择第一项,就要设置 ListBox.IsSynchronizedWithCurrentItem=“False” 关于此现象说明
阅读全文
摘要:不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员。比如这种 public List<MainWindowItem> Items => new List<MainWindowItem>() { new MainWindowItem{title="项目管理",icon="\
阅读全文
摘要:XAML文件内容如下 1 <Window x:Class="ERP.Views.Login" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft
阅读全文

浙公网安备 33010602011771号