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

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

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

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

代码

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

private ChildType FindVisualChild<ChildType>(DependencyObject obj) where ChildType : DependencyObject
{
for (int i = ; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
//Debug.WriteLine(child.GetType().ToString());
if (child != null && child is ChildType)
{
return child as ChildType;
}
else
{
ChildType childOfChildren = FindVisualChild<ChildType>(child);
if (childOfChildren != null)
{
return childOfChildren;
}
}
}
return null; }

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

private void TextBlock_SizeChanged(object sender, SizeChangedEventArgs e)
{
//获取子项目下的polygon属性。
Polygon p = FindVisualChild<Polygon>((sender as TextBlock).Parent); p.Points.Clear();
if ((sender as TextBlock).HorizontalAlignment == HorizontalAlignment.Left)
{
p.Points.Add(new Point(, ));
p.Points.Add(new Point(, ));
p.Points.Add(new Point(, ));
p.Points.Add(new Point( + e.NewSize.Width, ));
p.Points.Add(new Point( + e.NewSize.Width, + e.NewSize.Height));
p.Points.Add(new Point(, + e.NewSize.Height));
p.Points.Add(new Point(, ));
p.Fill = new SolidColorBrush(Color.FromArgb(, , , ));
}
else
{
p.Points.Add(new Point(, ));
p.Points.Add(new Point( + e.NewSize.Width, ));
p.Points.Add(new Point( + e.NewSize.Width, ));
p.Points.Add(new Point( + e.NewSize.Width, ));
p.Points.Add(new Point( + e.NewSize.Width, ));
p.Points.Add(new Point( + e.NewSize.Width, + e.NewSize.Height));
p.Points.Add(new Point(, + e.NewSize.Height));
p.Fill = new SolidColorBrush(Color.FromArgb(, , , ));
}
}
}

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. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...

  2. esxi安装全过程及基本配置

    esxi6.0下载地址 链接: http://pan.baidu.com/s/1jIfg2yU 密码: qacv 支持检测可以参考:http://www.linuxidc.com/Linux/2012 ...

  3. 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceTest.WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素

    原文  http://blog.csdn.net/bugdemo/article/details/9083497 主题 技术 在引用WebService后,程序运行到实例化WebService时报错, ...

  4. POJ 3687 Labeling Balls()

    Labeling Balls Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9641 Accepted: 2636 Descri ...

  5. iTOP-4412开发板---Linux系统学习下载步骤

    本文转自迅为论坛:http://www.topeetboard.com 1.cd /home/topeet/Linux-simple/console  下建立.c文件 2. 编译命令,就在此目录下 # ...

  6. noip2008普及组4题题解-rLq

    (啊啊啊终于补到了今天的作业了) 本题地址:http://www.luogu.org/problem/show?pid=1058 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣 ...

  7. C++ 之 常量成员函数

    类的常量成员函数 (const member function), 可以读取类的数据成员,但是不能修改. 1  声明 1.1  const 关键字 在参数列表后,加 const 关键字,声明为常量成员 ...

  8. Codeforces Round #370 (Div. 2)B. Memory and Trident

    地址:http://codeforces.com/problemset/problem/712/B 题目: B. Memory and Trident time limit per test 2 se ...

  9. python中BeautifulSoup库中find函数

    http://www.crummy.com/software/BeautifulSoup/bs3/documentation.zh.html#contents 简单的用法: find(name, at ...

  10. HDU 4419 Colourful Rectangle --离散化+线段树扫描线

    题意: 有三种颜色的矩形n个,不同颜色的矩形重叠会生成不同的颜色,总共有R,G,B,RG,RB,GB,RGB 7种颜色,问7种颜色每种颜色的面积. 解法: 很容易想到线段树扫描线求矩形面积并,但是如何 ...