辽阳做网站公司怎么用织梦制作响应式布局网站

web/2025/10/7 14:12:07/文章来源:
辽阳做网站公司,怎么用织梦制作响应式布局网站,免费模板网站推荐,抖音代运营联系方式wpf截屏系列 第一章 使用GDI实现截屏 第二章 制作截屏框#xff08;本章#xff09; ______第一节 使用DockPanel制作截屏框 ______第二节 利用Clip属性实现截屏框(本节) 第三章 实现截屏框热键截屏 第四章 实现截屏框实时截屏 第五章 使用ffmpeg命令行实现录屏 文章目录 wp…wpf截屏系列 第一章 使用GDI实现截屏 第二章 制作截屏框本章 ______第一节 使用DockPanel制作截屏框 ______第二节 利用Clip属性实现截屏框(本节) 第三章 实现截屏框热键截屏 第四章 实现截屏框实时截屏 第五章 使用ffmpeg命令行实现录屏 文章目录 wpf截屏系列前言一、实现步骤1、Clip穿透2、子控件同步Clip区域3、子控件实现拖动4、子控件实现拖动调整大小5、鼠标事件传递 二、完整代码1、自行整合2、简化的实现 三、效果预览1、矩形框2、圆形框 总结 前言 第一节已经实现过截屏框实现方法相对简单也仅支持矩形框。最近使用wpf的clip时发现了一种用法可以实现穿透效果。那显然我们基于clip也能实现截屏窗口而且支持任意形状。 一、实现步骤 1、Clip穿透 使用GeometryGroup 且FillRule为EvenOdd就可以做出穿透的效果。 GridGrid Width200 Height200 BackgroundSeaGreen Grid.ClipGeometryGroup FillRuleEvenOdd!--底下的rect必须保持和容器大小一致--RectangleGeometry Rect0 0 200 200 /!--上层形状即为穿透区域--RectangleGeometry x:NameforeRect Rect0 0 200 200 RadiusX100 RadiusY100//GeometryGroup/Grid.Clip/GridTextBlock HorizontalAlignmentCenter VerticalAlignmentCenter Text Clip区域会穿透 ForegroundBlack/TextBlock /Grid2、子控件同步Clip区域 单纯Clip无法实现拖动和改变大小尤其是改变大小直接通过鼠标事件结合clip也不好实现。比较简单的方法是定义一个子控件子控件的位置和大小与Clip关联这样只要实现子控件的拖动和调整大小功能就能控制Clip区域了。 通过LayoutUpdated事件就可以实时同步Clip区域。子控件就相当于截屏框。 Border x:NameclipBorder LayoutUpdatedBorder_LayoutUpdated下列代码的GetPosition是自定义拓展方法自己实现获取控件坐标即可。 private void Border_LayoutUpdated(object sender, EventArgs e) {//截屏框与上层clip rect保持一致foreRect.Rect new Rect(clipBorder.GetPosition(), new Size(clipBorder.ActualWidth, clipBorder.ActualHeight));; }3、子控件实现拖动 参考《wpf拖动系列》根据不同的容器选择不同实现直接拷贝网页代码此处使用第六章的功能简化实现。 Border x:NameclipBorder ac:Move.IsDragMoveableTrue 4、子控件实现拖动调整大小 参考《wpf拖动调整大小系列》根据不同的容器选择不同实现直接拷贝网页代码此处使用第五章的功能简化实现。 Border x:NameclipBorder ac:Resize.IsDragResizeableTrue 5、鼠标事件传递 由于使用了Clip穿透穿透区域的子控件是无法响应鼠标的有幸的是穿透区域不会影响装饰层所以我们需要在子控件里定义一个装饰器用于捕获鼠标消息。我们通过《wpf 附加属性实现界面上定义装饰器》简化装饰器的定义。 Border x:NameclipBorder!--截屏框的装饰层用于捕获鼠标消息--local:AdornerHelper.AdornerContentGrid MouseDownGrid_MouseDown BackgroundTransparent/Grid/local:AdornerHelper.AdornerContent /Borderprivate void Grid_MouseDown(object sender, MouseButtonEventArgs e) { //事件转移触发拖动clipBorder.RaiseEvent(e); }二、完整代码 1、自行整合 通过上述步骤将《wpf拖动系列》、《wpf拖动调整大小系列》、《wpf 附加属性实现界面上定义装饰器》网页上的代码对应容器类型整合到一起即可实现所有功能。 2、简化的实现 下列是使用wpf拖动系列第六章和wpf拖动调整大小系列第五章的实现需要下载。 xaml Window x:ClassWpfClip.MainWindowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlxmlns:dhttp://schemas.microsoft.com/expression/blend/2008xmlns:mchttp://schemas.openxmlformats.org/markup-compatibility/2006xmlns:localclr-namespace:WpfClipxmlns:acclr-namespace:ACmc:IgnorabledWindowStyleNoneBackgroundTransparentResizeModeNoResizeTopmostTrueWindowStateMaximizedTitleMainWindow Height450 Width800WindowChrome.WindowChromeWindowChrome GlassFrameThickness-1 CaptionHeight0 //WindowChrome.WindowChrome Grid x:Namegrid Background#80000000 LayoutUpdatedGrid_LayoutUpdatedGrid.Clip!--利用clip实现穿透--GeometryGroup FillRuleEvenOddRectangleGeometry x:NamebackRect/!--实际的截屏形状--RectangleGeometry x:NameforeRect //GeometryGroup/Grid.Clip!--截屏框--Border x:NameclipBorder Width200 Height200 ac:Move.IsDragMoveableTrue ac:Resize.IsResizeableTrue LayoutUpdatedBorder_LayoutUpdatedac:Resize.ThumbsTemplateControlTemplateBorder Width16 Height16 Background Green BorderBrushWhite BorderThickness2 CornerRadius8/Border/ControlTemplate/ac:Resize.ThumbsTemplateac:Resize.ThumbsPanelItemsPanelTemplateGrid Margin-8/Grid/ItemsPanelTemplate/ac:Resize.ThumbsPanel!--截屏框的装饰层用于捕获鼠标消息--local:AdornerHelper.AdornerContentGrid MouseDownGrid_MouseDown BackgroundTransparent/Grid/local:AdornerHelper.AdornerContent/Border/Grid /Windowcs using AC; using System.Windows; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; namespace WpfClip {/// summary/// Interaction logic for MainWindow.xaml/// /summarypublic partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Grid_LayoutUpdated(object sender, EventArgs e){//确保底层clip rect与容器大小相同backRect.Rectnew Rect(0,0, grid.ActualWidth, grid.ActualHeight);}private void Border_LayoutUpdated(object sender, EventArgs e){//截屏框与上层clip rect保持一致foreRect.Rect new Rect(clipBorder.GetPosition(), new Size(clipBorder.ActualWidth, clipBorder.ActualHeight));//圆形效果去掉则是矩形foreRect.RadiusX clipBorder.Width/2;foreRect.RadiusY clipBorder.Height/2;}private void Grid_MouseDown(object sender, MouseButtonEventArgs e){ //事件转移触发拖动clipBorder.RaiseEvent(e);}}internal class AdornerHelper{public static UIElement GetAdornerContent(DependencyObject obj){return (UIElement)obj.GetValue(AdornerContent);}public static void SetAdornerContent(DependencyObject obj, UIElement value){obj.SetValue(AdornerContent, value);}// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...public static readonly DependencyProperty AdornerContent DependencyProperty.RegisterAttached(AdornerContent, typeof(UIElement), typeof(AdornerHelper), new PropertyMetadata(null, (d, e) {var c d as FrameworkElement;if (c null)return;var adronerContent e.NewValue as UIElement;if (!c.IsLoaded){if (adronerContent ! null){RoutedEventHandler l null;l (s, E) {var content GetAdornerContent(c);if (content ! null){var layer AdornerLayer.GetAdornerLayer(c);if (layer null)throw new Exception(获取控件装饰层失败控件可能没有装饰层);layer.Add(new NormalAdorner((UIElement)c, (UIElement)e.NewValue));}c.Loaded - l;};c.Loaded l;}}else{var layer AdornerLayer.GetAdornerLayer(d as Visual);if (layer null)throw new Exception(获取控件装饰层失败控件可能没有装饰层);if (e.OldValue ! null){var adorners layer.GetAdorners(c);foreach (var i in adorners){if (i is NormalAdorner){var na i as NormalAdorner;if (na.Child e.OldValue){layer.Remove(i);break;}}}}if (adronerContent ! null){layer.Add(new NormalAdorner((UIElement)c, (UIElement)e.NewValue));}}}));class NormalAdorner : Adorner{UIElement _child;/// summary/// 构造方法/// /summary/// param nameadornedElement被添加装饰器的元素/param/// param namechild放到装饰器中的元素/parampublic NormalAdorner(UIElement adornedElement, UIElement child) : base(adornedElement){_child child;AddVisualChild(child);}public UIElement Child { get { return _child; } }protected override Visual GetVisualChild(int index){return _child;}protected override int VisualChildrenCount{get{return 1;}}protected override Size ArrangeOverride(Size finalSize){_child.Arrange(new Rect(new Point(0, 0), finalSize));return finalSize;}}} }三、效果预览 我们可以通过设置foreRect的类型改变形状当然Border_LayoutUpdated的逻辑也要相应的修改。 1、矩形框 2、圆形框 总结 以上就是今天要讲的内容有了之前的基础本文实现起来相对容易当前目前的也是比较初步的功能但灵活性是比DockPanel要好的尤其是支持任意形状这样就有利于后期划线截屏的实现了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

太原关键词优化服务wordpress织梦seo

转自:https://blog.51cto.com/wangyw/1071967 因工作需求,需要写一个DLL,并在其中创建windows窗口,网上有很多关于DLL创建窗口的文章,不过都是基于MFC的, 却鲜见直接用win32的DLL创建的。经过研究调试&…

家装效果图网站品牌的佛山网站建设价格

序列号管理,将从以下方面进行学习和阐述 WHY 为什么需要序列号,有什么作用 HOW sap如何进行管理序列号 WHEN 什么情况下适合进行序列号管理 1、 什么是序列号 首先简单介绍一个序列号是什么东西,我们使用的手机、电脑或者大家…

网站建设从入门到精通pdf设计公司logo大概需要多少钱

在现代图形应用程序开发中,OGRE(Object-Oriented Graphics Rendering Engine)作为一个高性能的3D渲染引擎,广泛应用于游戏开发、虚拟现实和仿真等领域。而QML(Qt Modeling Language)则是Qt框架中的一种声明式语言,专注于设计用户界面。将OGRE与QML结合,可以充分利用OGR…

手机模板网站生成制作软件网站后台管理系统怎么添加框

JavaScript 是一个基于原型的语言——一个对象的行为取决于它自身的属性及其原型的属性。 在 JavaScript 中,类可以看作是已有的原型继承机制的一种抽象——所有语法都可以转换为原型继承。类本身也是不过是 JavaScript 里一种普通的值,它们有其自己的原…

网站建设经营属性wordpress插件酷q

1. 代理服务器简介 代理服务器是一台充当中间人的服务器,它在客户端与目标服务器之间传递网络请求。代理服务器在不同层级上可以执行不同的任务,包括缓存、过滤、负载均衡和隐藏客户端真实IP地址等。在网络安全和爬虫领域,代理服务器具有重要…

如何不备案建网站公众号平台怎么做

第一次听说伪数组这个概念,听到的时候还以为是说CSS的伪类呢,网上一查,这东西原来还是个很常见的家伙。 何为伪数组 伪数组有两个特点: 具有length属性,其他属性(索引)为非负整数但是却不具备…

江苏省备案网站淄博人才网官网首页

主要介绍LocalDateTime的格式化字符串与时间戳的相互转换 常见带日期时间格式: 字段名字段值api格式DateTimeFormatter.ISO_LOCAL_DATE_TIME字符串patternyyyy-MM-dd’T’HH:mm:ss.SSS’示例2022-06-15T22:06:29.483字符串patternyyyy-MM-dd HH:mm:ss示例2022-06-…

打开手机网站速度慢一个人网站开发

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…

无限空间网站什么网站上可以做简历

“我在电脑上保存了很多照片,在清理电脑时一不小心误删了,现在完全没办法将它们找回,大家有什么方法吗?希望给我一些建议。” 在数字时代,照片成为了我们记录生活、珍藏回忆的重要载体。无论是旅行中的风景照、家庭聚会…

代理备案网站编程猫少儿编程官网

1107. 魔板 - AcWing题库 Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。 这是一张有 8 个大小相同的格子的魔板: 1 2 3 4 8 7 6 5我们知道魔板的每一个方格都有一种颜色。 这 8 种颜色用前 8 个正整数来表示。 可以用颜色的…

网站设计与推广同城招聘网站自助建站

前言 今天讲点比较高端的东西—DLL反射注入,首先什么是DLL文件,简答来说就是程序为了实现某个功能而调用的文件。举个例子,某个代码想要实现某个功能是不是会调用一些封装好的函数,exe同样如此,想要实现某个功能就会调…

商务网站建设总结网站建设的公司选择哪家好

作者 李祥 单位 湖北经济学院 给 52 张扑克牌面编号如下: 编号牌面编号牌面编号牌面编号牌面0♠A13♥A26♣A39♦A1♠214♥227♣240♦22♠315♥328♣341♦33♠416♥429♣442♦44♠517♥530♣543♦55♠618♥631♣644♦66♠719♥732♣745♦77♠820♥833♣846♦88♠9…

医疗网站模板免费下载北京专业网站维护公司

ToUpper()/ToLower() 作用:将字符串中字符转换为大写/小写字符,仅对字符有效,返回转换后的字符串。 使用:字符串变量名.ToUpper() / 字符串变量名.ToLower() 使用实例如下: using System; using System.Collection…

旅游网站建设规划方案江苏网站建设推广

Nginx怎么做负载均衡 Nginx 是一个高性能的开源反向代理服务器,可以用于实现负载均衡。负载均衡指的是将用户请求平均分配给多个服务器,以提高整体系统性能和可靠性。下面是一个详细介绍如何使用 Nginx 实现负载均衡的步骤: 步骤 1&#xf…

现在pc端网站开发用的什么技术河源东莞网站建设

Active Disk Image是一种磁盘映像软件,可以精确复制任何PC磁盘(HDD,SSD,USB,CD,DVD,Blu-ray等)并将其存储在文件夹中。磁盘映像可用于备份,PC升级或磁盘复制。万一计算机出现故障,可…

贵阳网站制作 建设南阳网站托管

HTML图形 1. HTML5 Canvas2.HTML5 内联 SVG3.HTML 5 Canvas vs. SVG 1. HTML5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 1、创建…

南京做企业网站的公司wordpress不适合大型网站

静态链接和动态链接 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一…

湖南搜索引擎推广多少钱网站关键词优化哪家正规

1. 题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值&#…

购物网站代码wordpress大胡子主题

试卷代号:1379 2021年春季学期期末统一考试 人文英语3 试题 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完考…

深圳企业网站定制wordpress uncode

近日,北京铭悦旅游客运有限公司又迎来一批苏州金龙海格纯电动客车。(以下简称北京铭悦旅游)总经理郭保生在车辆交付时说到,“为迎接强劲复苏的旅游市场,要求旅游客运向绿色客运转型,以及人民对品质生活、美…