WP&Win10仿微信消息框代码分享

Cle****-he UID.1073626
2015-08-07 发表

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

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

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

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

代码

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

[mw_shl_code=csharp,true]private ChildType FindVisualChild<ChildType>(DependencyObject obj) where ChildType : DependencyObject
{
for (int i = 0; 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;

}[/mw_shl_code]

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

[mw_shl_code=csharp,true]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(0, 15));
p.Points.Add(new Point(5, 10));
p.Points.Add(new Point(5, 0));
p.Points.Add(new Point(15 + e.NewSize.Width, 0));
p.Points.Add(new Point(15 + e.NewSize.Width, 20 + e.NewSize.Height));
p.Points.Add(new Point(5, 20 + e.NewSize.Height));
p.Points.Add(new Point(5, 20));
p.Fill = new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));
}
else
{
p.Points.Add(new Point(5, 0));
p.Points.Add(new Point(15 + e.NewSize.Width, 0));
p.Points.Add(new Point(15 + e.NewSize.Width, 10));
p.Points.Add(new Point(20 + e.NewSize.Width, 15));
p.Points.Add(new Point(15 + e.NewSize.Width, 20));
p.Points.Add(new Point(15 + e.NewSize.Width, 20 + e.NewSize.Height));
p.Points.Add(new Point(5, 20 + e.NewSize.Height));
p.Fill = new SolidColorBrush(Color.FromArgb(255, 81, 186, 35));
}
}
}[/mw_shl_code]

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


运行结果:

***附件停止解析***

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
Lonely§Dusk UID.443175
2015-08-07 使用 Lumia 1520 回复

还不错 谢谢分享

3517277 UID.13183
2015-08-07 回复

看来通用应用后,这个开发者区也热闹起来了。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报