magenta

【WPF学习】第四十六章 效果

﹥>﹥吖頭↗ 提交于 2020-04-18 12:03:17
  WPF提供了可应用于任何元素的可视化效果。效果的目标是提供一种简单的声明式方法,从而改进文本、图像、按钮以及其他控件的外观。不是编写自己的绘图代码,而是使用某个继承自Effect的类(位于System.Windows.Media.Effects名称空间中)以立即获得诸如模糊、辉光以及阴影等效果。   下表列出了可供使用的的效果类: 表 效果类   勿将上表列出的Effect类的派生类和位图效果类相混淆,位图效果派生类自BitmapEffect类,该类和Effect类位于相同的名称空间中。尽管位图效果具有类似的编程模型,但他们存在价格严重的局限性:   位图效果不支持像素着色器,像素着色器是创建可重用效果的最强大、最灵活的方式。   位图效果是用非托管的代码实现的,从而需要完全信任的应用程序。所以,在基于浏览器的XBAP应用程序中不能使用位图效果。   位图效果总使用软件进行渲染,不使用显卡资源。这使得它们的速度较慢,当处理大量元素或具有较大可视化表面的元素时尤其如此。   BitmapEffect类是在WPF的第一个版本中引入的,该版本没有提供Effect类。为了向后兼容,仍保留了位图效果。   接下里的几节深入分析效果模型,并演示上三个继承自Effect的类:BlurEffect、DropShadowEffect以及ShaderEffect。 一、BlurEffect类  

【WPF学习】第四十六章 效果

血红的双手。 提交于 2020-04-18 11:18:06
  WPF提供了可应用于任何元素的可视化效果。效果的目标是提供一种简单的声明式方法,从而改进文本、图像、按钮以及其他控件的外观。不是编写自己的绘图代码,而是使用某个继承自Effect的类(位于System.Windows.Media.Effects名称空间中)以立即获得诸如模糊、辉光以及阴影等效果。   下表列出了可供使用的的效果类: 表 效果类   勿将上表列出的Effect类的派生类和位图效果类相混淆,位图效果派生类自BitmapEffect类,该类和Effect类位于相同的名称空间中。尽管位图效果具有类似的编程模型,但他们存在价格严重的局限性:   位图效果不支持像素着色器,像素着色器是创建可重用效果的最强大、最灵活的方式。   位图效果是用非托管的代码实现的,从而需要完全信任的应用程序。所以,在基于浏览器的XBAP应用程序中不能使用位图效果。   位图效果总使用软件进行渲染,不使用显卡资源。这使得它们的速度较慢,当处理大量元素或具有较大可视化表面的元素时尤其如此。   BitmapEffect类是在WPF的第一个版本中引入的,该版本没有提供Effect类。为了向后兼容,仍保留了位图效果。   接下里的几节深入分析效果模型,并演示上三个继承自Effect的类:BlurEffect、DropShadowEffect以及ShaderEffect。 一、BlurEffect类  

LeetCode 56. 合并区间

无人久伴 提交于 2020-04-18 10:04:37
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 56. 合并区间 题目 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: [[1,4],[4,5]] 输出: [[1,5]] 解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/merge-intervals 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-先按照区间起始位置排序,然后顺序合并 步骤: 按区间起始位置升序排序,新建与源数组长度相同的结果数组rst,并把第一个区间添加进去,此时rst长度为k=1; 从第二区间起,校验每个区间的左边界是否在rst最后一个区间的右边界内(<=),在则合并,否则新增进rst且k++; 返回rst的实际长度的部分即为合并结果;

LeetCode 55. 跳跃游戏

橙三吉。 提交于 2020-04-18 08:57:31
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 55. 跳跃游戏 题目 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。 示例 2: 输入: [3,2,1,0,4] 输出: false 解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/jump-game 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 贪心算法:一种是从前往后贪,另一种是从后往前贪; 思路1-从前往后贪心 步骤: 初始最远可达为end=0,若i在end范围内,则更新end的最远可达为Math.max(end, i + nums[i]),否则直接返回不可达(若i都不可达

LeetCode 面试题 16.03. 交点

时间秒杀一切 提交于 2020-04-17 02:04:18
【推荐阅读】微服务还能火多久?>>> 我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题 16.03. 交点 题目 给定两条线段(表示为起点start = {X1, Y1}和终点end = {X2, Y2}),如果它们有交点,请计算其交点,没有交点则返回空值。 要求浮点型误差不超过10^-6。若有多个交点(线段重叠)则返回 X 值最小的点,X 坐标相同则返回 Y 值最小的点。 示例 1: 输入: line1 = {0, 0}, {1, 0} line2 = {1, 1}, {0, -1} 输出: {0.5, 0} 示例 2: 输入: line1 = {0, 0}, {3, 3} line2 = {1, 1}, {2, 2} 输出: {1, 1} 示例 3: 输入: line1 = {0, 0}, {1, 1} line2 = {1, 0}, {2, 1} 输出: {},两条线段没有交点 提示: 坐标绝对值不会超过 2^7 输入的坐标均是有效的二维坐标 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/intersection

LeetCode 542. 01 矩阵

雨燕双飞 提交于 2020-04-16 09:31:09
【推荐阅读】微服务还能火多久?>>> 我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 542. 01 矩阵 题目 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入: 0 0 0 0 1 0 0 0 0 输出: 0 0 0 0 1 0 0 0 0 示例 2: 输入: 0 0 0 0 1 0 1 1 1 输出: 0 0 0 0 1 0 1 2 1 注意: 给定矩阵的元素个数不超过 10000。 给定矩阵中至少有一个元素是 0。 矩阵中的元素只在四个方向上相邻: 上、下、左、右。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/01-matrix 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 本题比较直接想到的是BFS和DFS,另外还有dp不容易想到; 图解: 思路1-BFS 把所有的0位置当作同源起始搜索位置往内层bfs; 算法复杂度: (N为数组的元素总数) 时间复杂度: $ {\color{Magenta}{\Omicron

LeetCode 151. 翻转字符串里的单词

白昼怎懂夜的黑 提交于 2020-04-11 13:43:59
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 151. 翻转字符串里的单词 题目 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 进阶: 请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/reverse-words-in-a-string 著作权归领扣网络所有

LeetCode 22. 括号生成

谁说胖子不能爱 提交于 2020-04-10 11:40:01
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 22. 括号生成 题目 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例: 输入:n = 3 输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ] 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/generate-parentheses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-回溯/DFS 这个思路说是回溯或者DFS都好像可以... 先尝添加左括号,再尝试添加右括号; 每次添加时,左括号的数不能大于n,若当次的右括号数小于左括号数,则可以选择放一个右括号; 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(\frac{n^{4}}{\sqrt{n}}\right)}} $ (本题实际是 卡特兰数 问题,证明我就不班门弄斧了,我目前也不太懂...) 空间复杂度: $ {\color

Qt信号槽使用结构体作为参数

廉价感情. 提交于 2020-04-06 13:05:35
信号可以带参数,参数的类型,必须是元对象系统能够识别的类型, 即元类型。 下面这几个类型是自动注册的,不需要使用Q_DECLARE_METATYPE这个宏: 1.QObject继承下来的子类的指针; 2.QList<T>, QVector<T>, QQueue<T>, QStack<T>, QSet<T> or QLinkedList<T>这些T都是自动注册的; 3.QHash<T1, T2>, QMap<T1, T2> or QPair<T1, T2> T1,和T2都是自动注册的; 4.QPointer<T>, QSharedPointer<T>, QWeakPointer<T>这3个T必须是QObject的子类; 5.枚举类型要用Q_ENUM or Q_FLAG; 6.拥有Q_GADGET宏的类。 例如:自定义结构体,connect想通过结构体参数来传递 struct _ColorBalance { bool preserve_luminosity; int cyan_red[3]; int magenta_green[3]; int yellow_blue[3]; }; signals: void state_changed(_ColorBalance *color_balance); connect(this, &ColorBalance::state_changed,

分布式系统中如何优雅地追踪日志(原理篇)

故事扮演 提交于 2020-01-06 13:55:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> > 本文只讲原理,不讲框架。 分布式系统中日志追踪需要考虑的几个点? 需要一个全服务唯一的id,即traceId,如何保证? traceId如何在服务间传递? traceId如何在服务内部传递? traceId如何在多线程中传递? 我们一一来解答: 全服务唯一的traceId,可以使用uuid生成,正常来说不会出现重复的; 关于服务间传递,对于调用者,在协议头加上traceId,对于被调用者,通过前置拦截器或者过滤器统一拦截; 关于服务内部传递,可以使用ThreadLocal传递traceId,一处放置,随处可用; 关于多线程传递,分为两种情况: 子线程,可以使用InheritableThreadLocal 线程池,需要改造线程池对提交的任务进行包装,把提交者的traceId包装到任务中 比如,上面这个系统,系统入口在A处,A调用B的服务,B里面又起了一个线程B1去访问D的服务,B本身又去访问C服务。 我们就可以这么来跟踪日志: 所有服务都需要一个全局的InheritableThreadLocal保存服务内部traceId的传递; 所有服务都需要一个前置拦截器或者过滤器,检测如果请求头没有traceId就生成一个,如果有就取出来,并把traceId放到全局的InheritableThreadLocal里面;