Archive for the ‘WPF/Silverlight’ Category

实现GetSampleAsync()

接下来需要实现MediaStreamSource.GetSampleAsync()。当系统解码器需要新的视频或音频sample的时候会调用这个函数,这个函数需要根据MediaStreamType返回相应的下一个sample。至于是预加载所有的sample还是用on demand的方式获取下一个sample都可以,前者可能会在播放视频的头几秒有所卡顿,后者可能会导致seek的过程略长。

Read the rest of this entry »

众所周知,Windows Phone SDK自带的MediaElement不支持FLV容器。但是根据MSDN所言[1],实际上Windows Phone在硬件上支持AAC音频和H264视频的播放。恰巧大部分网络FLV视频都是AAC+H264编码的,于是理论上我们就可以通过实现MediaStreamSource来让MediaElement认识和播放FLV视频。我在开发哔哩哔哩客户端的时候就采用了这个技术。

本文同时适用于Windows Phone 7/7.1和Windows Phone 8。在本文之前,你不会在互联网上获得任何关于如何在Windows Phone上使用MediaStreamSource播放FLV视频的完整关键代码。

Read the rest of this entry »

先展示一下控件效果:

这个TextBox通过重写控件模板,实现了边框的消除,平时看起来就像TextBlock,和背景融为一体,点击的时候就可以编辑文字。

Read the rest of this entry »

先展示一下控件效果:

这个控件在Windows Phone官方demo的PeopleHub里面貌似很常用,能显示好友在社交网站上的更新数量之类的,很符合Windows Phone的Metro设计风格,而且做起来也不难,用Path搞定外观,再想办法动态处理一下Text的大小就行了。懒惰起见我就用UserControl做了。

Read the rest of this entry »

最近的项目开发中遇到了这个问题,基本尝试了所有使用Silverlight on WP7来播放音频流的方法,总结了一下它们各自的特点。

Read the rest of this entry »

我们知道TileBrush是WPF中一个战斗力暴高的虚基类,从它派生出的DrawingBrush,ImageBrush和VisualBrush在WPF图形编程中发挥着重要作用。然而关于TileBrush的Viewbox、Viewport两大重要属性经常令人感到迷惑,Stretch、AlignmentX/Y两种对齐方式也往往让人搞混。这些知识在MSDN上讲得过于模棱两可,网上似乎也没有能够很清晰并且有条理地讲述它们之间关系的文章。于是今天下午我又牺牲了一下午的大好时光,做了一些实验来研究这个问题。

Read the rest of this entry »

先展示一下控件效果:

这种效果做起来并不难,而且MSDN上已经有了一篇文章[1],谈到了如何设计一个每行背景色可变的ListView。但是众所周知WPF和Silverlight,尤其是Silverlight For WP7总是有点差距的,你会发现对于方法一,Silverlight不支持在Style中的Setter里面设置Binding,对于方法三,Silverlight不知道ItemContainerStyleSelector是神马玩意,看起来只有方法二能用,但是想实现“在Items集合改变后更新ListBox”的效果,文章最后的方法也不能用,因为CollectionViewSource的GetDefaultView方法在Silverlight里面也浮云了。

于是我们采用方法二,派生一个ListBox,然后想办法动态更新它。

Read the rest of this entry »

World Line
Time Machine
Friendly Links
Online Tools