首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏张志敏的技术专栏

    Silverlight 中的 UIElement 与 FrameworkElement

    Silverlight 中的 UIElement 与 FrameworkElement 在 Silverlight 中, 有两个比较重要的基础控件 UIElement 和 FrameworkElement , 如果你要开发自定义控件或者模版控件, 那么就可能要经常使用这两个基础控件, MSDN 中对这两个控件的描述如下: UIElement is a base class for most of the (UIElement 是 Silverlight 中具有可视外观并可以处理基本输入的大多数对象的基类。) , 那么继承自 UIElement 是最佳选择。 , 但是所有的控件都保留了操作 UIElement 的能力。

    81710发布于 2020-08-10
  • 来自专栏dino.c的专栏

    UIElement.Clip虽然残废,但它还可以这样玩

    复习一下WPF的UIElement.Clip 用了很久很久的WPF,但几乎没有主动用过它的Clip属性,我只记得它很灵活,可以裁剪出多种形状。 有这么多种Geometry,WPF的UIElement就可以裁剪成各种奇形怪状的形状,过去也有很多示例和文章讲解过如何利用WPF的Clip,这里就割爱了。 2. UWP中的UIElement.Clip WPF的Clip真的为所欲为,然而到了UWP就变得绑手绑脚了,因为UWP的UIElement.Clip居然是个RectangleGeometry属性,也就是说UIElement 结语 UWP中其实有几种裁剪方案,最残废的是UIElement.Clip,也就是这篇文章提到的这个。上一篇文章还讲解了Win2D中裁剪。 参考 UIElement.Clip 属性 (System.Windows) _ Microsoft Docs UIElement.Clip Property (Windows.UI.Xaml) - Windows

    1K20发布于 2019-12-02
  • 来自专栏walterlv - 吕毅的博客

    Visual->UIElement->FrameworkElement,带来更多功能的同时也带来了更多的限制

    Visual->UIElement->FrameworkElement,带来更多功能的同时也带来了更多的限制 发布于 2017-11-13 15:55 但是,FrameworkElement 甚至是 Control 用得久了,都开始忘记 Visual、UIElement 带给我们的那些自由。 这两组方法均来自于 UIElement,而布局系统其实是 UIElement 引入的。 那么 FrameworkElement 做了什么呢? Override 后缀纯属是因为 UIElement 把这个名字用了而已。 屏幕交互 UIElement 中存在着布局计算,FrameworkElement 中存在着带限制的布局计算,这很容易让人以为屏幕相关的坐标计算会存在于 UIElement 或者 FrameworkElement

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

    WPF HandyControl 已支持给任意控件通过按下移动抬起封装点击事件

    类,这个类提供了使用控件的按下移动抬起事件封装为点击事件 使用方法: Install-Package HandyControl 给任意控件 element 附加按下移动抬起封装点击事件,下面代码的 uiElement 是一个 UIElement 控件 HandyControl.Tools.InputClickHelper.AttachMouseDownMoveUpToClick(uiElement, UIElement_OnClicked ); private void UIElement_OnClicked(object sender, EventArgs e) { 使用方法如下 HandyControl.Tools.InputClickHelper.AttachMouseDownMoveUpToClick(uiElement, UIElement_OnClicked , UIElement_OnDragStarted); private void UIElement_OnDragStarted(object sender, EventArgs e)

    91520发布于 2020-07-07
  • 来自专栏林德熙的博客

    WPF 最小的代码使用 DynamicRenderer 书写

    在 WPF 中有 DynamicRenderer 提供高性能的书写,这个类在 WPF 只有 InkCanvas 使用,如果想要在自己的 UIElement 使用,需要写一些代码 先创建一个 UIElement 自定义一个,因为 DynamicRenderer 继承于 StylusPlugIn 需要使用 UIElement 的 StylusPlugIns 属性才能添加他 下面创建一个 MeexikelelHaiwurbe 的 UIElement 现在里面什么都没写 public class MeexikelelHaiwurbe : UIElement { } 为了使用 DynamicRenderer 需要支持他的输入层和显示层 输入层 对于 StylusPlugIn 需要加入到 UIElement 的 StylusPlugIns 才能收到触摸的消息 这部分的原理比较复杂,请看 WPF 高速书写 StylusPlugIn 原理 在构造函数添加代码将 DynamicRenderer 添加到 UIElement 的 StylusPlugIns 方法 public MeexikelelHaiwurbe()

    54720编辑于 2022-08-04
  • 来自专栏Dotnet9

    WPF 水印装饰器

    WatermarkAdorner : Adorner { private string _watermarkText; public WatermarkAdorner(UIElement uiElement = (UIElement)this.Content; AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(uiElement ); adornerLayer.Add(new WatermarkAdorner(uiElement, _watermarkText)); 完整MainWindow.xaml代码: <Window x uiElement = (UIElement)this.Content; AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer (uiElement); adornerLayer.Add(new WatermarkAdorner(uiElement, _watermarkText)); }

    70510发布于 2021-12-01
  • 来自专栏walterlv - 吕毅的博客

    实现一个 WPF 版本的 ConnectedAnimation

    PrepareToAnimate(): ConnectedAnimationService.GetForCurrentView().PrepareToAnimate(/*string */key, /*UIElement TryStart(/*UIElement */destination); 于是,我们至少需要实现这些 API: ConnectedAnimationService.GetForCurrentView } public bool TryStart([NotNull] UIElement destination, [NotNull] IEnumerable<UIElement> coordinatedElements )sender, ConnectionDestination); } private async void BeginConnectedAnimation(UIElement source, UIElement private async void BeginConnectedAnimation(UIElement source, UIElement destination) { source.Visibility

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

    WPF 最小的代码使用 DynamicRenderer 书写 输入层设置宽高视觉树

    在 WPF 中有 DynamicRenderer 提供高性能的书写,这个类在 WPF 只有 InkCanvas 使用,如果想要在自己的 UIElement 使用,需要写一些代码 先创建一个 UIElement 自定义一个,因为 DynamicRenderer 继承于 StylusPlugIn 需要使用 UIElement 的 StylusPlugIns 属性才能添加他 下面创建一个 MeexikelelHaiwurbe 的 UIElement 现在里面什么都没写 public class MeexikelelHaiwurbe : UIElement { } 为了使用 DynamicRenderer 需要支持他的输入层和显示层 输入层 对于 StylusPlugIn 需要加入到 UIElement 的 StylusPlugIns 才能收到触摸的消息 这部分的原理比较复杂,请看 WPF 高速书写 StylusPlugIn 原理 在构造函数添加代码将 DynamicRenderer 添加到 UIElement 的 StylusPlugIns 方法 public MeexikelelHaiwurbe()

    1.3K10发布于 2019-03-13
  • 来自专栏dino.c的专栏

    Silverlight自定义鼠标

    pp.IsOpen =True;   } 2, public bool CaptureMouse():将鼠标捕获设置为 UIElement。    依序返回点中的UIElement及其Parent,一直到Parent==Null为止,其结果是一个IEnumerable<UIElement>。 因为MouseEventArgs不具备Handled属性,所以在VisualTree上同一个区域的所有UIElement都会发生MouseMove事件,其次序是从上层直到下层。 如果有一个Grid,里面包含一个Border,且Grid和Border都设定了自定义鼠标,则会发生冲突,所以我使用了这个方法获取最上层并且设定了自定义鼠标的UIElement。 2:自定义鼠标出现的地点基于附加了CustomCursor属性的UIElement在MouseMove事件时产生的Point,所以如果鼠标没有在CustomCursor上移动过,自定义鼠标就不会出现。

    93330发布于 2019-01-18
  • 来自专栏林德熙的博客

    WPF 给任意控件通过按下移动抬起封装点击事件

    同时可以设置一定的时间范围,超过一定时间就是长按了,而不是点击了 根据这个特点咱开始来进行一个简单的封装,在封装之前先告诉大家封装之后的使用方法,下面代码的 uiElement 是一个 UIElement 控件 InputHelper.AttachMouseDownMoveUpToClick(uiElement, UIElement_OnClicked); private void UIElement_OnClicked(object sender, EventArgs e) { } 实现 InputHelper param name="dragStarted">因为拖动而结束点击时触发</param> public static void AttachMouseDownMoveUpToClick(UIElement name="dragStarted">因为拖动而结束点击时触发的事件</param> public static void DetachMouseDownMoveUpToClick(UIElement

    1.1K30发布于 2020-07-06
  • 来自专栏Windows Community

    Extensions in UWP Community Toolkit - Visual Extensions

    首先看一下类中定义的附加属性: AnchorPoint - 获取或设置 UIElement 的 Visual.AnchorPoint 属性,string 类型;改变时触发 OnAnchorPointChanged 事件; CenterPoint - 获取或设置 UIElement 的 Visual.CenterPoint 属性,string 类型;改变时触发 OnCenterPointChanged 事件; Offset - 获取或设置 UIElement 的 Visual.Offset 属性,string 类型;改变时触发 OnOffsetChanged 事件; Opacity - 获取或设置 UIElement 的 属性,string 类型;改变时触发 OnRotationAxisChanged 事件; Scale - 获取或设置 UIElement 的 Visual.Scale 属性,string 类型;改变时触发 - 获取或设置 UIElement 的 Visual.CenterPoint 属性在 0.0 - 1.0 之间标准化的值,string 类型;改变时触发 OnNormalizedCenterPointChanged

    91950发布于 2018-04-28
  • 来自专栏walterlv - 吕毅的博客

    WPF 中使用附加属性,将任意 UI 元素或控件裁剪成圆形(椭圆)

    WPF 的 UIElement 提供了 Clip 依赖项属性,可以使用一个 Geometry 来裁剪任意的 UIElement。 于是,我们可以利用这一点,使用 EllipseGeometry 将任意 UIElement 裁剪成圆形或者椭圆形。 source.ClearValue(UIElement.ClipProperty); return; } // 如果 UIElement.Clip {UIElement.ClipProperty.Name} " + "for clipping, dont use this property manually."); } // 使用 UIElement.Clip 属性。

    2.1K30发布于 2018-09-18
  • 来自专栏walterlv - 吕毅的博客

    WPF / Windows Forms 检测窗口在哪个屏幕

    Width="800"> <Grid x:Name="RootPanel"> <Canvas SnapsToDevicePixels="True"> <UIElement.RenderTransform > <ScaleTransform ScaleX="0.2" ScaleY="0.2" /> </UIElement.RenderTransform > <Border x:Name="ScreenBorder" Background="#E4E4E6"> <UIElement.RenderTransform > <TranslateTransform x:Name="ScreenTranslateTransform" /> </UIElement.RenderTransform > <TranslateTransform x:Name="WindowTranslateTransform" /> </UIElement.RenderTransform

    86130编辑于 2023-10-22
  • 来自专栏给永远比拿愉快

    Silverlight中的三维效果和3D动画

    Silverlight中可以使用称作“透视转换”的功能将三维效果应用与任何Silverlight UIElement来制作三维效果,此外,还可以对透视转换属性进行动画处理,以便创建移动的三维效果。 在三维平面上旋转对象 若要将某一属性转换应用于UIElement,请将UIElement对象的Projection属性设置为PlaneProjection。 Name="Flyout">             <DoubleAnimation Duration="0:0:1.5" To="360" Storyboard.TargetProperty="(<em>UIElement</em>.Projection Storyboard x:Name="RotateX">             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(<em>UIElement</em>.Projection DoubleAnimationUsingKeyFrames>             <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Projection

    1.1K30发布于 2019-01-25
  • 来自专栏ComPDFKit tutorials

    ComPDFKit PDF SDK V1.6.0 Updated New Features: Edit PDF Directly like Word!

    e.PopupMenu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement e.PopupMenu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement e.PopupMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement e.PopupMenu.Items.Add(new MenuItem() { Header = "Select All", Command = ApplicationCommands.SelectAll, CommandTarget = (UIElement

    48020编辑于 2022-12-02
  • 来自专栏给永远比拿愉快

    Silverlight中定义布局面板

    double space = constrainingSize / 2; return space / Orbits; } private List<UIElement >[] SortElements() { var list = new List<UIElement>[Orbits]; for (int else { list[i] = (from UIElement child in Children where GetOrbit (child) == i select child).ToList<UIElement>(); } } return list var sortedItems = SortElements(); double max = 0.0; foreach (List<UIElement

    63350发布于 2019-01-25
  • 来自专栏林德熙的博客

    win10 uwp 获得Slider拖动结束的值

    开始写一个简单页面 <Slider PointerReleased="<em>UIElement</em>_OnPointerReleased"></Slider> 然后后台使用 F12 生成代码,不需要写什么 因为ms在注释写 请注意,并不保证 Press 操作结束会激发 Windows.UI.Xaml.UIElement.PointerReleased 事件;可能会改为激发其他事件。 public MainPage() { this.InitializeComponent(); Slider.AddHandler(UIElement.PointerReleasedEvent /*哪个事件*/, new PointerEventHandler(UIElement_OnPointerReleased) /*使用哪个函数处理*/, true /*如果在之前处理,是否还使用函数* /); } 这样,垃圾ms在底层处理,现在还是可以获得,因为设置了如果在之前处理,还使用定义的函数,这时在 UIElement_OnPointerReleased 就可以获得鼠标松开的值

    1.2K20发布于 2019-03-13
  • 来自专栏Niuery的技术日记

    WPF --- 触摸屏下的两个问题

    就是在对应包含ScrollViewer 的 UI 元素绑定它的反馈事件,然后在注册方法中设置 e.Handled = true; ,这样中断了事件继续冒泡或隧道传播,比如这样 // 在Xaml中,在对应的 UIElement 上绑定ManipulationBoundaryFeedback="UIElement_ManipulationBoundaryFeedback" //Code-Behind中 , private void UIElement_ManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) { IsFeedbackProperty = DependencyProperty.RegisterAttached("IsFeedback", typeof(bool), typeof(UIElement ), new PropertyMetadata(true, (s, e) => { var target = s as UIElement

    88510编辑于 2024-03-13
  • 来自专栏dino.c的专栏

    [UWP]理解ControlTemplate中的VisualTransition

    <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(<em>UIElement</em>.Opacity <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity (UIElement.Opacity)" Value="1" /> </VisualState.Setters> </VisualState (UIElement.Opacity)" Value="1" /> </VisualState.Setters> </VisualState </ObjectAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(<em>UIElement</em>.Opacity

    90030发布于 2019-01-18
  • 来自专栏Kiba518

    【我们一起写框架】MVVM的WPF框架之序篇(一)

    = GetElement<Window>(); (UIElement as Window).Closing += (s, e) => { is Window) { (UIElement as Window).Show(); } else is Window) { (UIElement as Window).ShowDialog(); } is Window) { (UIElement as Window).Close(); } else is Window) { (UIElement as Window).Hide(); } else

    2.6K30发布于 2018-09-28
领券