随笔分类 -  net / WPF

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

//右下角目录