建体彩网|中彩网双色球连号|
?
快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

龍8娛樂國際手機版下載安裝:【Windows Phone實用開發教程】40、使用NGif創建GIF圖片示例

?

NGif是.net 頂用來創建gif圖片的類庫,可以遷移到windows phone中來,在windows phone中創建gif圖片。

Gif動畫便是在必然光陰距離內,將圖片依次顯示,將多幅圖像保存為一個圖像文件,從而形成動畫。

把NGif遷移到windows phone有兩種不合的要領

1. 在原始的NGif中采納image工具表示當前幀的圖像,windows phone中也有image工具,直接應用,只要改動部分不兼容的代碼即可

2. 應用WriteableBitmap代替image,用來表示當前幀的圖像。

在翰墨末真個示例demo中兩種要領都有源代碼供給。

要領一:

在NGif中,應用了GDI技巧,我們可以應用WriteableBitmap的擴展措施去調換。

Image temp =

new Bitmap(width, height); Graphics g = Graphics.FromImage(temp);

g.DrawImage(image, 0, 0); image = temp;

g.Dispose();

可以寫為

WriteableBitmap temp = new WriteableBitmap(image,null);

temp.Resize(width, height, WriteableBitmapExtensions.Interpolation.NearestNeighbor); image = new Image { Source = temp };

至于其他的遷移代碼可以在源代碼中查看。

本文將會應用遷移后的NGif從相冊中選擇圖片,制作GIF圖片以及著末在法度榜樣中顯示制作的圖片。首頁運行效果如下:

圖片選擇的模板如下:

DataTemplate x:Key="DT_Image">

Grid>Button Click="Button_Click">

Button.Template>ControlTemplate>

Image Source="{Binding Thumbnail}" Height="100" Width="100" Margin="5" />ControlTemplate>

Button.Template>Button>

Image Source="selected.png"Height="32" Width="32"

Visibility="{Binding IsSelectedVisibility}"HorizontalAlignment="Righ龍8娛樂國際手機版下載安裝t"

VerticalAlignmen龍8娛樂國際手機版下載安裝t="Bottom"/>Grid>

DataTemplate>

ListBox代碼如下:

ListBox x:Name="lbDefault" Margin="7龍8娛樂國際手機版下載安裝,-10,0,0"

ItemTemplat龍8娛樂國際手機版下載安裝e="{StaticResource DT_Image}"ItemsSource="{Binding DefaultImages}">

ListBox.ItemsPanel>ItemsPanelTemplate>

toolkit:WrapPanel/>ItemsPanelTemplate>

ListBox.ItemsPanel> ListBox>

至于從相冊中加載圖片可以查見地度榜樣源代碼。

看一下制作GIF的代碼

private void btn2_Click(object sender, RoutedEventArgs e)

{List

list = new List

();

foreach (var item in defaultImages){

if (item.IsSelectedVisibility == System.Windows.Visibility.Visible){

list.Add(item);}

}if (list.Count == 0)

{MessageBox.Show(龍8娛樂國際手機版下載安裝"請選擇圖片");

return;}

String outputFilePath = "test2.gif";

GifLib2.AnimatedGifEncoder maker = new GifLib2.AnimatedGifEncoder();maker.Start(outputFilePath);

maker.SetDelay(500);//-1:no repeat,0:always repeat

maker.SetRepeat(0);

foreach (var item in list){

maker.AddFrame(item.Image.Resize(320, 320, WriteableBitmapExtensions.Interpolation.NearestNeighbor));}

maker.Finish();MessageBox.Show("done, find it in iso named :" + outputFilePath);

NavigationService.Navigate(new Uri("/DisplayGifPage.xaml?name=" + outputFilePath, UriKind.Relative)); }

首先實例化AnimatedGifEncoder工具,設置其輸前道路,距離光陰,以及重復次數,然后將要制作的圖片添加到其幀中就可以了。

制作Gif完成后,我們會在法度榜樣中顯示制作的Gif,此時就要用到GifDecoder了,將Gif解碼為一張張圖片。

private void LoadGif(string name)

{GifDecoder decoder = new GifDecoder();

using (var store = IsolatedStorageFile.GetUserStoreForApplication()){

if (!store.FileExists(name)){

MessageBox.Show("gif image 不存在");return;

}using (var stream = store.OpenFile(name, System.IO.FileMode.Open, System.IO.FileAccess.Read))

{decoder.Read(stream);

//get frame size to set image size

Size size = decoder.GetFrameSize();image.Width = size.Width;

image.Height = size.Height;

int delay = decoder.GetDelay(1);

//0 stand for loop forever, otherwise is the real countint loopCount = decoder.GetLoopCount();

//decoder.GetLoopCountint imagecount = decoder.GetFrameCount();

for (int i = 0; i{

imageList.Add(decoder.GetFrame(i));}

DisplayGif(delay, loopCount);}

} }

從自力存儲空間中加載Gif,并且獲取他的一些屬性:重復次數,幀數,以及每一幀對應的圖像,然后應用一個Timer將其顯示即可:

private void DisplayGif(int delay, int loopCount)

{DispatcherTimer timer = new DispatcherTimer();

timer.Interval = TimeSpan.FromMilliseconds(delay);int index = 0;

int loopedCount = 0;//已經輪回的次數timer.Tick += (sender, e) =>

{//假如是永世輪回

if (loopCount == 0){

if (index == imageList.Count - 1){

index = 0;}

}else

{if (loopCount == loopedCount)

{timer.Stop();

}loopedCount++;

}image.Source = imageList[index];

index++;};

timer.Start(); }

本文僅僅講述了若何在windows phone中制作Gif,并且解碼并顯示Gif,此中很多代碼可以優化,大年夜家可以酌情應用本示例中的代碼。

源代碼可以在這里找到。

免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

您可能還會對下面的文章感興趣:

建体彩网
2017德甲排名 海王捕鱼官网鱼兑换码 二肖中特公开 欧乐棋牌游戏中心 在中国福彩网站上能购买彩票吗 30日福彩3d试机号 雷速体育官方下载 奖多多彩票安卓 点击百度联盟赚钱技巧 j江苏7位数走势图