上次分享了幸运转盘的源码,感觉小伙伴们很喜欢;这次和大家分享下通信相关部分需要用到的类似微信的消息框代码,有需要的童鞋可以拿去用哟。自己尝试写的,可能有点low,勿喷呀!

希望以后有好的东西大家都分享下,相互学习,感兴趣的童鞋欢迎加入我的Win10开发者群:53078485,共同探讨!

下面是仿微信消息框实现思路+核心代码:

思路
1.用 Polygon绘制对话框。
2.通过遍历可视化树获取ListView子项目的Polygon属性。
3.获取Textblock的Size。由于Textblock的Size是不固定的,可以通过在Textblock的SizeChange方法获得Size。

代码

//FindVisiualChild可以遍历可视化树,获取对应需要的属性。

  1. private ChildType FindVisualChild<ChildType>(DependencyObject obj) where ChildType : DependencyObject
  2. {
  3. for (int i = ; i < VisualTreeHelper.GetChildrenCount(obj); i++)
  4. {
  5. DependencyObject child = VisualTreeHelper.GetChild(obj, i);
  6. //Debug.WriteLine(child.GetType().ToString());
  7. if (child != null && child is ChildType)
  8. {
  9. return child as ChildType;
  10. }
  11. else
  12. {
  13. ChildType childOfChildren = FindVisualChild<ChildType>(child);
  14. if (childOfChildren != null)
  15. {
  16. return childOfChildren;
  17. }
  18. }
  19. }
  20. return null;
  21.  
  22. }

//通过TextBlock的SizeChange事件,获取TextBlock的Size,并用Polygon绘制对话框。

  1. private void TextBlock_SizeChanged(object sender, SizeChangedEventArgs e)
  2. {
  3. //获取子项目下的polygon属性。
  4. Polygon p = FindVisualChild<Polygon>((sender as TextBlock).Parent);
  5.  
  6. p.Points.Clear();
  7. if ((sender as TextBlock).HorizontalAlignment == HorizontalAlignment.Left)
  8. {
  9. p.Points.Add(new Point(, ));
  10. p.Points.Add(new Point(, ));
  11. p.Points.Add(new Point(, ));
  12. p.Points.Add(new Point( + e.NewSize.Width, ));
  13. p.Points.Add(new Point( + e.NewSize.Width, + e.NewSize.Height));
  14. p.Points.Add(new Point(, + e.NewSize.Height));
  15. p.Points.Add(new Point(, ));
  16. p.Fill = new SolidColorBrush(Color.FromArgb(, , , ));
  17. }
  18. else
  19. {
  20. p.Points.Add(new Point(, ));
  21. p.Points.Add(new Point( + e.NewSize.Width, ));
  22. p.Points.Add(new Point( + e.NewSize.Width, ));
  23. p.Points.Add(new Point( + e.NewSize.Width, ));
  24. p.Points.Add(new Point( + e.NewSize.Width, ));
  25. p.Points.Add(new Point( + e.NewSize.Width, + e.NewSize.Height));
  26. p.Points.Add(new Point(, + e.NewSize.Height));
  27. p.Fill = new SolidColorBrush(Color.FromArgb(, , , ));
  28. }
  29. }
  30. }

Demo分享地址:http://pan.baidu.com/s/1i3KVEp3

运行结果:

WP&Win10仿微信消息框代码分享的更多相关文章

  1. android 模拟微信消息框 BaseAdapter()方法 [2]

    在昨天的微信布局的基础上加内容 http://www.cnblogs.com/Seven-cjy/p/6098024.html 项目下/res/layout下创建一个 listview_layout. ...

  2. WPF自定义搜索框代码分享

    首先下载搜索图标: 控件中的搜索图标下载地址:http://www.easyicon.net/1183666-Search_icon.html 搜索框设计过程比较简单: 1.先定义一个Rectangl ...

  3. electron聊天室|vue+electron-vue仿微信客户端|electron桌面聊天

    一.项目概况 基于Electron+vue+electron-vue+vuex+Nodejs+vueVideoPlayer+electron-builder等技术仿制微信电脑端界面聊天室实例,实现消息 ...

  4. 原生wcPop.js消息提示框(移动端)、内含仿微信弹窗效果

    wcPop.js移动端消息对话框插件是之前的wxPop.js的升级版,优化了js和css,并且新增了仿微信弹窗效果, 是一款含有多种情景模式的原生模态消息对话框代码,可用于替代浏览器默认的alert弹 ...

  5. uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息

    基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...

  6. iOS开发-仿微信图片分享界面实现

    分享功能目前几乎已成为很多app的标配了,其中微信,微博等app的图片分享界面设计的很棒,不仅能够展示缩略图,还可以预览删除.最近我在做一款社交分享app,其中就要实现图文分享功能,于是试着自行实现仿 ...

  7. wpf实现仿qq消息提示框

    原文:wpf实现仿qq消息提示框 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/article/details/5052 ...

  8. iOS天气动画、高仿QQ菜单、放京东APP、高仿微信、推送消息等源码

    iOS精选源码 TYCyclePagerView iOS上的一个无限循环轮播图组件 iOS高仿微信完整项目源码 想要更简单的推送消息,看本文就对了 ScrollView嵌套ScrolloView解决方 ...

  9. 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口)

    在上章37.qt quick- 高仿微信实现局域网聊天V3版本(添加登录界面.UDP校验登录.皮肤更换.3D旋转),我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主界面和登 ...

随机推荐

  1. leveldb源码分析--Iterator遍历数据库

    在DBImpl中有一个函数声明为Iterator* DBImpl::NewIterator(const ReadOptions& options) ,他返回一个可以遍历或者搜索数据库的迭代器句 ...

  2. 单点登录系统(SSO)之CAS(中央认证服务)

    SSO(Single Sign On)单点登录系统,是在多个系统中值要求只要登录一次,就可以用已登录的身份访问多个系统,去掉了每次访问不同的系统都要重新登录的弊端. CAS(中央/集中认证服务):Th ...

  3. web开发相关解决方案

    HTML5 API 应用 History.js - gracefully supports the HTML5 History/State APIs pushState + ajax Notify.j ...

  4. 关于CPU Cache:程序猿需要知道的那些

    天下没有免费的午餐,本文转载于:http://cenalulu.github.io/linux/all-about-cpu-cache/ 先来看一张本文所有概念的一个思维导图: 为什么要有CPU Ca ...

  5. html列表

    有序列表 <ol type="A", start="C"> <!--ordered list--> <li>第一项</ ...

  6. Spring @Transactional ——事务回滚

    工作原理运行配置@Transactional注解的测试类的时候,具体会发生如下步骤1)事务开始时,通过AOP机制,生成一个代理connection对象,并将其放入DataSource实例的某个与Dat ...

  7. POj3104 Drying(二分)

    Drying Time Limit: 2000MS Memory Limit: 65536K Description It is very hard to wash and especially to ...

  8. 解决客户端通过zookeeper连接到hbase时连接过多的问题

    原因:客户端程序通过zookeeper访问hbase的连接数超过设置的默认链接数(默认数是30),连接数不够用会导致后续的连接连接不上去. 解决办法:设置hbase-site.xml配置文件,添加如下 ...

  9. Fast RCNN 训练自己数据集 (1编译配置)

    FastRCNN 训练自己数据集 (1编译配置) 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ https:/ ...

  10. SharePoint Error:a system restart from a previous installation or update is pending

    run:regedit 打开注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除PendingFileR ...