首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏林德熙的博客

    wpf VisualBrush 已知问题

    本文告诉大家,visualBrush 已知 bug ,希望大家使用 VisualBrush 时可以知道 如果把 VisualBrush 绑定的是在元素加入到视觉树前,那么在元素加入到视觉树之后移除视觉树 ,VisualBrush 就不会自动刷新 如果把没有加入视觉树的元素加入到 VisualBrush 绑定,之后把元素加入视觉树,再移除,再加入,这时可能 VisualBrush 不再刷新。 如果元素绑定 VisualBrush 然后对元素使用 RenderTargetBitmap 就会让 VisualBrush 无法使用。 解决方法,设置 VisualBrush 的 Visual 为空再设置元素 var visual = visualBrush.Visual; visualBrush.Visual = null; visualBrush.Visual

    82310发布于 2018-09-18
  • 来自专栏林德熙的博客

    wpf VisualBrush 已知问题

    本文告诉大家,visualBrush 已知 bug ,希望大家使用 VisualBrush 时可以知道 如果把 VisualBrush 绑定的是在元素加入到视觉树前,那么在元素加入到视觉树之后移除视觉树 ,VisualBrush 就不会自动刷新 如果把没有加入视觉树的元素加入到 VisualBrush 绑定,之后把元素加入视觉树,再移除,再加入,这时可能 VisualBrush 不再刷新。 如果元素绑定 VisualBrush 然后对元素使用 RenderTargetBitmap 就会让 VisualBrush 无法使用。 解决方法,设置 VisualBrush 的 Visual 为空再设置元素 var visual = visualBrush.Visual; visualBrush.Visual = null; visualBrush.Visual

    54930发布于 2019-03-13
  • 来自专栏walterlv - 吕毅的博客

    The VisualBrush of WPF only refresh the visual but not the layout

    Now we’ll talk about a behavior of WPF VisualBrush. The Border only shows its background which a VisualBrush of the Grid. the Rectangle is visible with Visibility property Visible, the Border background which contains the VisualBrush Rectangle is invisible with Visibility property Collapsed, the Border background which contains the VisualBrush I’ve fired this issue into GitHub and this is the link: The VisualBrush only refresh the visual but not

    34220编辑于 2023-10-22
  • 来自专栏林德熙的博客

    WPF 如何获取有哪些 VisualBrush 用了某个控件

    我写了一个特殊的控件,我期望了解到有哪些 VisualBrush 捕获了此控件,或者说有哪些 VisualBrush 用了此控件的界面 本文的方法需要用到反射,需要使用 WPF 框架里面没有公开的字段获取某个 Keys.OfType<VisualBrush>().ToList() ?? new List<VisualBrush>(0); return visualBrushes; } } 通过上面代码不仅可以获取某个控件,是否被作为 VisualBrush 的 Visual 作为画刷,还可以获取当前有哪些 VisualBrush 捕获了这个控件 写一个简单的界面,将这个控件设置为某个 VisualBrush 的 Visual 内容,然后将这个 VisualBrush 继承了这个接口 public sealed partial class VisualBrush : TileBrush, ICyclicBrush { } 在设置 VisualBrush

    69220发布于 2021-08-31
  • 来自专栏林德熙的博客

    WPF 解决 ViewBox 不显示线的问题

    因为 ViewBox 和 visualBrush 都使用 邻近算法 所以 ViewBox 和 visualBrush 都存在丢失线的问题。 本文提供一个算法,解决 单线条在WPF不显示问题。 得到结果差不多, ViewBox 和 visualBrush 都会丢失线段。 的方法,把控件转为图片,但是效率没有 visualBrush 那么高。 不过在 1280*720P 的控件效率大概比 VisualBrush 时间大概多不到 50 毫秒。 呆磨:http://download.csdn.net/detail/lindexi_gd/9868941 参见:How to fix VisualBrush lost line?

    89020编辑于 2022-08-04
  • 来自专栏林德熙的博客

    WPF 使用 VisualBrush 在 4k 加 200 DPI 设备上某些文本不渲染看不见问题

    将 DrawingVisual 绘制到 VisualBrush 里面,再将 VisualBrush 作为贴图给矩形使用,这样的优势在于可以在命中测试的时候,只处理矩形。矩形命中测试的耗时可以忽略。 但是在图表控件里面,架不住点的数量很多,尽管命中测试性能足够高,然而点的数量足够多也可以拖住性能 如下是将 DrawingVisual 绘制到 VisualBrush 上,再将 VisualBrush }; dw.DrawRectangle(visualBrush, null, dv.ContentBounds); _visualBrush 而将 dv 作为 VisualBrush 的输入,接着新建一个叫 ret 的 DrawingVisual 对象,在这里面重新绘制出矩形然后用 VisualBrush 做贴图 这样做的优势在于可以利用到 和 VisualBrush 的机制有关,在 VisualBrush 里面,要求先将内容渲染为 Bitmap 位图再作为某个元素的贴图层,执行顺序上需要有些复杂。而为什么如此复杂的逻辑会挖坑?

    1.3K20发布于 2021-11-15
  • 来自专栏walterlv - 吕毅的博客

    WPF 的 VisualBrush 只刷新显示的视觉效果,不刷新布局范围

    WPF 的 VisualBrush 可以帮助我们在一个控件中显示另一个控件的外观。这是非常妙的功能。 但是本文需要说其中的一个 Bug —— 如果使用 VisualBrush 显示另一个控件的外观,那么只会在其显示效果有改变的时候刷新,而不会在目标布局改变的时候刷新布局。 如果 Rectangle 不可见(Visibility 为 Collapsed),那么 Border 中以 VisualBrush 显示的内容将仅有文字且拉伸到整个 Border 范围。 只是——后面 VisualBrush 的内容始终重叠。这意味着 VisualBrush 中目标 Visual 的范围增大之后不会再缩小了。 问题? 这是问题吗? 于是在以下 issue 中跟进此问题: VisualBrush 的其他 Bug 参见: wpf VisualBrush 已知问题 - 林德熙 本文会经常更新,请阅读原文: https://blog.walterlv.com

    1.7K50编辑于 2023-10-22
  • 来自专栏个人编程笔记

    WPF-TextBox实现Placeholder

    浏览量 11 <TextBox> <TextBox.Resources> <VisualBrush x:Key="HelpBrush" TileMode="None" Opacity ="0.3" Stretch="None" AlignmentX="Left"> <VisualBrush.Visual> <TextBlock FontStyle="Italic" Text="请输入用户名"/> </VisualBrush.Visual> </VisualBrush> </TextBox.Resources

    1.4K20编辑于 2023-04-23
  • 来自专栏技术之路

    WPF-实现TextBox和PasswordBox显示背景文字

    "Transparent" BorderThickness="0"> <TextBox.Resources> <VisualBrush x:Key="HelpBrush" TileMode="None" Stretch="None" AlignmentX="Left"> <VisualBrush.Visual Foreground="White" Text="请输入用户名"/> </Border> </VisualBrush.Visual > </VisualBrush> </TextBox.Resources>

    57310编辑于 2024-04-23
  • 来自专栏林德熙的博客

    WPF 解决 ViewBox 不显示线的问题

    因为 ViewBox 和 visualBrush 都使用 邻近算法 所以 ViewBox 和 visualBrush 都存在丢失线的问题。 本文提供一个算法,解决 单线条在WPF不显示问题。 得到结果差不多, ViewBox 和 visualBrush 都会丢失线段。 的方法,把控件转为图片,但是效率没有 visualBrush 那么高。 不过效率大概比 VisualBrush 时间大概多不到 50 毫秒在1280*720P的控件。 呆磨:http://download.csdn.net/detail/lindexi_gd/9868941 参见:How to fix VisualBrush lost line?

    1.8K10发布于 2018-09-19
  • 来自专栏独立观察员博客

    不可不知的WPF画笔(Brush)

    视觉对象画笔(VisualBrushVisualBrush使用Visual对象(视觉元素)绘制区域,视觉对象包括Button,Page,MediaElement等内容。 VisualBrush还可以将应用程序的一部分投影到另一个区域。创建反射效果和放大屏幕部分非常有用。 VisualBrush myBrush = new VisualBrush(); // // Create the brush's contents. // StackPanel panel = new </TextBlock> </StackPanel> </VisualBrush.Visual> </VisualBrush> </Rectangle.Fill> 此外,除 Brush 之外的所有 VisualBrush 类型可以设置为只读,以提高性能和使线程安全。

    1.1K00编辑于 2024-11-23
  • 来自专栏码客

    WPF Textbox设置Placeholder

    前言 将一个与占位符绑定的TextBlock放入VisualBrush内,在TextBox的Text为空时使用VisualBrush绘制背景,不为空时背景设为Null。 /// 文本框和Visual画刷对应的字典 /// private static readonly Dictionary<TextBox, VisualBrush > TxtBrushes = new Dictionary<TextBox, VisualBrush>(); #endregion Fields #region Attached ; placeholderTextBlock.Foreground = Brushes.Gray; var placeholderVisualBrush = new VisualBrush _placeholderVisualBrush = new VisualBrush(); #endregion Fields #region Properties

    2.8K40编辑于 2023-02-10
  • 来自专栏dino.c的专栏

    [WPF] 使用 Effect 玩玩阴影、内阴影、 长阴影

    我的做法是用一个 VisualBrush 获取需要做阴影的图像,然后再用 WPF 的 BlurEffect 让它变模糊: <Grid ClipToBounds="True"> <Grid> <BlurEffect Radius="38" /> </Grid.Effect> <Grid.Background> <VisualBrush 现在用 Effect,我首先想到的做法是叠加两个元素,上层的元素根据另一个元素的 VisualBrush 剪切出一个洞,然后在这个洞投下阴影: <Grid x:Name="BackgroundElement Grid.Effect> <effects:ClipEffect> <effects:ClipEffect.Blend> <<em>VisualBrush</em>

    2.2K20编辑于 2022-05-07
  • 来自专栏hbbliyong

    WPF --TextBox--圆角、水印、带单位

    TextBox.MouseOver.Border" Color="#FF7EB4EA"/> <SolidColorBrush x:Key="TextBox.Focus.Border" Color="#FF569DE5"/> <VisualBrush x:Key="HintText" TileMode="None" Opacity="0.5" Stretch="None" AlignmentX="Left"> <VisualBrush.Visual > <TextBlock FontStyle="Italic" Text="请输入数据"/> </VisualBrush.Visual> </VisualBrush

    1.4K30发布于 2019-09-25
  • 来自专栏dino.c的专栏

    [WPF] 抄抄超强的苹果官网滚动文字特效实现

    resultColor.a = opacity; return resultColor; } 使用的时候,在一个不透明的元素上应用 ClipEffect,将它的 Blend 属性设置为要裁剪的形状的 VisualBrush ,例如下面的代码里使用了文字作为 VisualBrush,最终在 Grid 上裁剪出一段文字的镂空: <Grid Background="Black"> <Grid.Effect> <effects:ClipEffect> <effects:ClipEffect.Blend> <VisualBrush Stretch="None

    1.9K20编辑于 2022-10-31
  • 来自专栏dino.c的专栏

    [WPF] 实现 WPF 的 Inner Shadow

    UIElement.ClipToBounds 属性 (System.Windows) UIElement.Clip 属性 (System.Windows) UIElement.OpacityMask 属性 VisualBrush Center" Content="OpacityMask" /> </Border> <Grid.OpacityMask> <VisualBrush Stretch="None" Visual="{Binding ElementName=Rectangle2}" /> </Grid.OpacityMask> </Grid> 这个方案用另一个元素的 VisualBrush

    1.3K10编辑于 2021-12-28
  • 来自专栏林德熙的博客

    WPF 调用 InvalidateVisual 不触发 OnRender 的原因

    有的,如果使用 VisualBrush 获取元素的显示状态,那么此时的元素即使不在视觉树上也能进行显示,当然这也就出现了 VisualBrush 的内存泄漏问题了,详细请看 wpf VisualBrush

    2.8K20发布于 2020-03-12
  • 来自专栏walterlv - 吕毅的博客

    实现一个 WPF 版本的 ConnectedAnimation

    throw new ArgumentNullException(nameof(destination)); _sourceBrush = new VisualBrush(source) {Stretch = Stretch.Fill}; _destinationBrush = new VisualBrush(destination) {Stretch = Stretch.Fill throw new ArgumentNullException(nameof(destination)); _sourceBrush = new VisualBrush (source) {Stretch = Stretch.Fill}; _destinationBrush = new VisualBrush(destination) {

    83300发布于 2018-09-18
  • 来自专栏dino.c的专栏

    [WPF] 抄一个 CSS3 实现的按钮

    BlurRadius="7" ShadowDepth="0" /> </Border.Effect> </Border> <Grid.OpacityMask> <VisualBrush

    1K20编辑于 2021-12-28
  • 来自专栏JusterZhu

    Avalonia 11.2 正式发布:跨平台应用开发的飞跃

    引入的 VisualBrush 作为 OpacityMask 功能: 解决了之前只能使用颜色画刷作为不透明度遮罩的问题。 通过这一改进,开发者现在可以使用 VisualBrush 创建更复杂的视觉效果。

    1.2K10编辑于 2025-01-23
领券