ئالدىنقى قىتىم بىلوگىمىزدا ئىپتىدايى ھالەتتىكى ئەپ قويغۇچنىڭ سىناق نۇسخىسىنى ئورتاقلاشقان ئىدۇق، تەپسىلاتى مانا : Win8 ئاددىي فىلىم قويغۇچ ئەپ كودى بۇ قىتىم ئاشۇ ئەپنى تېخىمۇ مۇكەممەللەشتۈرگەن ئاساستا تەشنا قويغۇچىسى 1.0 نەشىرىنى ھوزۇرۇڭلارغا سۇندۇم. ئەلۋەتتە بۇ پەقەت بىر ئۆگېنىش باسقۇچىدىكى ئەسەر ھېسابلىنىدۇ، شۇڭا يىتەرسىزلىكلەرنىڭ كۆپ بولۇشى نورمال. ئەمما پۈتۈن كودىنى ئۆزۈم نۆلدىن باشلاپ يازغاچقا، ھەم بىر تەرەپتىن ئۆگىنىۋاتقان بولغاچقا موشۇنچىلىك قىلالىدىم. قېنى ئاۋۋال كۆرۈنمە يۈزىنى كۆرۈپ باقايلى:
[t]دېتال كۆرۈنمە يۈزى ۋە ئىقتىدارلىرى[/t]
يەنى يۇقىرىقى رەسىمدىكىدەك ئاددىيلا بىر مىترو ئەپ ھېسابلىنىدۇ. بۇ قىتىم ئاساسلىقى فىلىم توربەتلىرىنىڭ ئەپ دىتالى شەكلىدە ئۆزگەرتىشكە ئالاھىدە كۈچىدىم. يەنى مەزكۇر ئەپنى ئازغىنە ئۆزگەرتىش ئارقىلىق فىلىم توربەتلىرىنىڭ مۇلازىمىتىرىدىكى فىلىملەرنى بىۋاستە قويىدىغان قىلغىلى بولىدۇ. ئەلۋەتتە يەرلىكتىكى فىلىم ۋە مۇزىكىلارنىمۇ ئېچىپ قويۇشقا بولىدۇ.
1. ئەپ ئىقتىدارلىرى: يان تەرەپ تىزىملىكىدىكى فىلىملەرنى تاللاش ئارقىلىق ئىكىران قىسمىدا قويۇشقا بولىدۇ، سول تەرەپتە فىلىم چۈشەندۈرۈلىشى كۆرسىتىلىدۇ(نۆۋەتتە بۇلار Uri ئادرىس شەكلىدە يەرلىكتىكى ھۆججەت قىسقۇچلىرىدىن ئوقۇپ ئېلىنىدۇ، ئادرىسنى ئۆزگەرتسەكلا مۇلازىمىتىر ياكى تور بەتلەردىكى فىلىملەرنى ئوقۇپ ئېلىش تامامەن مومكىن). فىلىم چۈشەندۈرۈلىشى قىسمىدا فىلىم مۇقاۋا رەسىمى قوشۇپ كۆرسىتىلىدۇ؛ ئىكىران ئاستىدا باھا يوللاش كۆزنىكى بار(نۆۋەتتە ساندان مۇلازىمىتى ئۇلىمىغاچقا بۇ ئىقتىدار ئىشلىمەيدۇ)؛ ئاۋاز تەڭشەشكە، ئۈستى تەرەپتىكى قىسقۇچ بەلگىسىنى بېسىپ، كومپىيوتېرىمىزدىكى فىلىملەرنى ئېچىپ قويۇشقا بولىدۇ.
2. ئەپنىڭ نۆۋەتتىكى قوللايدىغان فىلىم فورماتلىرى: mp4, avi ۋە ئاۋاز ھۆججەتلىرىدىن mp3, wvm قاتارلىقلار (تېخىمۇ كۆپ فورمات قوللايدىغان قىلىش تامامەن مومكىن).
3. ئەپ ئىجرا مۇھىتى: Windows8, Windows8.1 قاچىلانغان كومپىيوتېر ياكى تاختا كومپىيوتېر(ئەلۋەتتە مەزكۇر دېتال ئەپ دۇكىنىغا چىقىرىلمىدى، خالىغانچە قاچىلاپ ئىشلەتكىلى بولمايدۇ، پەقەت VisualStudio2012, Visual Studio Express for Win8 قاتارلىقلار ياكى يۇقىرى نەشىرىىدىكى قورللار بىلەن ئىجرا قىلىپ كۆرۈشكە بولىدۇ).
[t]دىتال مۇھىم كود تەھلىللىرى ۋە ھۆججەت چۈشۈرۈش[/t]
بۇ ئۆگېنىش باسقۇچىدىكى ئەسەر بولغاچقا ئەسلى كودىنى قىزىققۇچىلارغا تەمىنلەيمىز، شارائىتى، دېتال ئېچىش مۇھىتى سەپلەگلىك دوسلار چۈشۈرۈپ، ئىجرا قىلىپ كۆرسەڭلار بولىدۇ.
ئەپ #C تىلىدا يېزىلغان بولۇپ، ئاساسلىق ئىقتىدار كودلىرى تۆۋەندىكىدەك:
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.Storage; using Windows.Storage.Pickers; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Imaging; using Windows.UI.Xaml.Navigation; // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 namespace Video_Player { ////// An empty page that can be used on its own or navigated to within a Frame. /// public sealed partial class MainPage : Page { #region Keng dyirlik miqdarlar private Dictionaryvideouri = new Dictionary (); private Dictionary Description_uri = new Dictionary (); DispatcherTimer ticks = new DispatcherTimer(); List VideosList = new List (); bool isplaying = false; bool ispaused = false; #endregion public MainPage() { this.InitializeComponent(); #region APP qozghalghanda masqedemde yuklinidighan mezmunlar videouri.Add(0, "ms-appx:///Videos/video1.wmv"); videouri.Add(1, "ms-appx:///Videos/video2.wmv"); videouri.Add(2, "ms-appx:///Videos/video3.wmv"); videouri.Add(3, "ms-appx:///Videos/video4.wmv"); videouri.Add(4, "ms-appx:///Videos/video5.wmv"); videouri.Add(5, "ms-appx:///Videos/video6.wmv"); Description_uri.Add(0, "ms-appx:///Description/video1.txt"); Description_uri.Add(1, "ms-appx:///Description/video2.txt"); Description_uri.Add(2, "ms-appx:///Description/video3.txt"); Description_uri.Add(3, "ms-appx:///Description/video4.txt"); Description_uri.Add(4, "ms-appx:///Description/video5.txt"); Description_uri.Add(5, "ms-appx:///Description/video6.txt"); VideosList.Add(new ImageDescription { Title = "بىلىجانلار ئويناۋاتىدۇ", uri = "ms-appx:///Images/1.jpg" }); VideosList.Add(new ImageDescription { Title = "تەبىئەتنىڭ گۈزەللىكى", uri = "ms-appx:///Images/2.jpg" }); VideosList.Add(new ImageDescription { Title = "باللا ئويناۋاتىدۇ", uri = "ms-appx:///Images/3.jpg" }); VideosList.Add(new ImageDescription { Title = "باھاردا گۈللەر ئېچىلدى", uri = "ms-appx:///Images/4.jpg" }); VideosList.Add(new ImageDescription { Title = "خانقىز ماھارەتلىرىدىن", uri = "ms-appx:///Images/5.jpg" }); VideosList.Add(new ImageDescription { Title = "سىمفونىيە", uri = "ms-appx:///Images/6.jpg" }); VideoListView.ItemsSource = VideosList; #endregion } /// /// Invoked when this page is about to be displayed in a Frame. /// /// Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page. /// #region Ishlar(Events) protected override void OnNavigatedTo(NavigationEventArgs e) { } //Sinni qoyush we qaytilash private void Play_Button_Click(object sender, RoutedEventArgs e) { if (ispaused == false && isplaying == false) { Initial_Display.Visibility = Visibility.Collapsed; } else if (ispaused == true && isplaying == false) { PlayView(); VideoPlayer.Position = new TimeSpan(0, 0, 0, 0, (int)DurationSlider.Value); VideoPlayer.Play(); } } // Tizimliktin tallanghan filimni qoyush private async void VideoListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { PlayView(); VideoPlayer.Source = Index_to_Uri_Converter(VideoListView.SelectedIndex); Windows.Storage.StorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation; Windows.Storage.StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(Description_uri[VideoListView.SelectedIndex])); string Des = await Windows.Storage.FileIO.ReadTextAsync(file); BitmapImage bt = new BitmapImage(); bt.UriSource = new Uri(VideosList[VideoListView.SelectedIndex].uri); DescriptionImage.Source = bt; Description.Text = Des; } // Ilgirlesh tayaqchisi arqiliq sinni yotkep korush private void SeekToMediaPosition(object sender, RangeBaseValueChangedEventArgs e) { int slidervalue = (int)DurationSlider.Value; TimeSpan ts = new TimeSpan(0, 0, 0, 0, slidervalue); VideoPlayer.Position = ts; } // ilgirlesh tayaqchisi mas qedemlik waqit private void VideoPlayer_MediaOpened(object sender, RoutedEventArgs e) { DurationSlider.Maximum = VideoPlayer.NaturalDuration.TimeSpan.TotalMilliseconds; ticks.Interval = TimeSpan.FromMilliseconds(1); ticks.Tick += ticks_Tick; ticks.Start(); } // Filim qoyulush waqti bilen mas qedemde ilgirlesh tayaqchisini yotkesh void ticks_Tick(object sender, object e) { DurationSlider.Value = VideoPlayer.Position.TotalMilliseconds; DurationText.Text = Milliseconds_to_Minute((long)VideoPlayer.Position.TotalMilliseconds); } // Filimni toxtitish private void Pause_Button_Click(object sender, RoutedEventArgs e) { PauseView(); VideoPlayer.Pause(); } private void OpenFileButton_Click(object sender, RoutedEventArgs e) { SetLocalMedia(); } // Awaz tayaqchisi yotkelgende awaz qimmitini mas qedemde ozgertish private void VolumeSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e) { VideoPlayer.Volume = (VolumeSlider.Value) / 100; } #endregion #region Fonkisiyeler(Functions) //Tallighan filim Uri adirisigha irishsh public Uri Index_to_Uri_Converter(int index) { var uri = new Uri(videouri[index]); return uri; } //Conversion of Milliseconds to Time Display Format public string Milliseconds_to_Minute(long milliseconds) { int minute = (int)(milliseconds / (1000 * 60)); int seconds = (int)(milliseconds / 1000); return (minute + " : " + seconds); } // Filimni toxtatqandin kiyinki halet public void PauseView() { isplaying = false; ispaused = true; Play_Button.Visibility = Visibility.Visible; Pause_Button.Visibility = Visibility.Collapsed; Play_ImageButton.Visibility = Visibility.Collapsed; Pause_ImageButton.Visibility = Visibility.Visible; } //Filim qoyuliwatqandiki halet public void PlayView() { Initial_Display.Visibility = Visibility.Collapsed; isplaying = true; ispaused = false; Play_Button.Visibility = Visibility.Collapsed; Pause_Button.Visibility = Visibility.Visible; Play_ImageButton.Visibility = Visibility.Collapsed; Pause_ImageButton.Visibility = Visibility.Collapsed; } // Achqan flim hojjitini qoyush private async void SetLocalMedia() { try { FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail; openPicker.FileTypeFilter.Add(".wmv"); openPicker.FileTypeFilter.Add(".mp4"); openPicker.FileTypeFilter.Add(".aiv"); openPicker.FileTypeFilter.Add(".mp3"); StorageFile file = await openPicker.PickSingleFileAsync(); var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); VideoPlayer.SetSource(stream, file.ContentType); VideoPlayer.Play(); BitmapImage bt = new BitmapImage(); bt.UriSource = new Uri("ms-appx:///Images/error.png"); DescriptionImage.Source = bt; Description.Text = "كومپىيوتېردىكى يەرلىك فىلىملەردىن قويۇلىۋاتىدۇ."; PlayView(); } catch (Exception) { } } #endregion } public class ImageDescription { public string Title { get; set; } public string uri { get; set; } } }
38 - قۇردىن 58 - قۇرغىچە بولغان قىسمىنى ئۆزگەرتىش ئارقىلىق قويغۇچنى بىۋاستە مەلۇم فىلىم تور بېتىنىڭ مۇلازىمىتىرىدىكى فىلىملەرنى قويۇش ۋە ماس ئۇچۇرلىرىنى كۆرسىتىش، ئىنكاس يوللا قاتارلىق ئىقتىدارلىرىنى ئەمەلگە ئاشۇرغىلى بولىدۇ. ساندان مۇلازىمىتىگە ئۇلاش ئارقىلىق ئىنكاس يوللاش، يوللانغان ئىنكاسلارنى كۆرۈش ئىقتىدارلىرى سەپلىگىلى بولىدۇ. پاسون قىسمى XAML بىلەن ئورۇنلاشتۇرۇلغان (بۇ پەقەت مەشىق ئەسەر بولغاچقا UI لايىھەسىگە ئانچە كۈچەپ كەتمىدىم).
مەزكۇر ئەپنىڭ ئەسلى ھۆججەتلىرىنى بۇيەردىن چۈشۈرۈڭ: چۈشۈرۈش ئادرىسى ئېلىش نومۇرى: 5cek
ئىشلىتىش ئۇسسۇلى: ھۆججەتنى چۈشۈرۈپ، پىرېستىن يىشىپ، قىسقۇچ ئىچىدىكى Vedio Player ناملىق VS نىڭ بەلگىسى بار ھۆججەتنى VS بىلەن ئېچىپ، F5 نى بېسىپ ئىجرا قىلسىڭىزلا بولىدۇ.
[t]ئاخىرقى سۆز[/t]
ئۇيغۇرچە دېتاللاردا بەزى كونتىروللارنىڭ يۆنىلىشىنى ئوڭدىن - سولغا بەلگىلەش كېرەكمۇ ياكى سولدىن - ئوڭغىمۇ؟ مەسىلەن: قويغۇچنىڭ سىيرىلما تاياقچىسىنى ئادەتتە ھەممەيلەن سولدىن ئوڭغا يۆنىلىشتە ئىشلىتىپ كۆنۈپ قاپتۇق، ئەمما ئويلاپ باقسام ئوڭدىن سولغا بولسا ھەقىقىي توغرىدەك... شۇڭا مەزكۇر دېتالدا ھەممە كونتىرولنى ئوڭدىن - سولغا يۆنىلىش بويىچە ئىشلەتتىم. بۇ ھەقتە ئويلىغانلىرىڭلارنى ئوتتۇرىغا قويۇپ باقساڭلار!
كىيىنكى نەشرىدە كۆرۈنمە يۈزىنى سىپتىلاشتۇرغاندىن سىرت، سەزمە ئىكىرانلىق ئۈسكۈنىلەرگە تېخىمۇ ماسلاشتۇرىمەن، مەسىلەن: ئەپنى ئىكىراننىڭ بىر بۇلىڭىغا تارتىپ قويغاندىن كېيىن قۇرۇلمىسى ئاپتوماتىك تەڭشىلىش؛ سېستىما باشلاش كۆزنىكىدىكى(开始界面) ھەرىكەتچان تىزىملىك(动态磁贴) قىسمىدا يىڭىلانما ئۇچۇرلارنى كۆرستىش؛ تەڭشەك، تىزىملىتىش، كىرىش، پۈتۈن ئىكىران قاتارلىق بىر قىسىم تىزىملىك ۋە ئىقتىدار كونۇپكىلىرىنى قوشۇش قاتارلىقلارنى ئەمەلگە ئاشۇرىمەن. تورداشلار يەنە باشقا ئىجادىي تەكلىپ - پىكىر، تەنقىدلىرى بولسا ئايىماي تارتۇق ئەتكەي!
ئاۋال دىۋان :ئوماق:
مېنى بەك خىجىل قىلىپ قۇيىۋاتىسىز جۇمۇ . :ئوماق:
بۇمۇ بولغىنى ، مانا مۇشۇنداق تىرىشچانلار بار ، دەپ سىزنى ئۈزۈمگە بەلگە جىسىم قىلىۋالدىم :ھا ھا:
«بەلگە جىسىم» ماۋۇ گەپ قىززىقكەن :ھا ھا: ، بىرلىكتە تىرىشايلى…
قەستەن يازغانتىم جىسىم دەپ
كېلەر قېتىم شەيئى ، ماددا ،بۇيۇم دەپ يازايمىكىن :ھا ھا:
ھەقىقەتەن ياخشى چىقىپتۇ، باھا يېزىڭ دىگەن يەرگە ما يازمىغا باھا يازىدىغان قىلىپ تەڭشەپ قويغان ئوخشايدۇ دەپ، شۇنداق جېق گەپ يازسام يوللانماپتۇ، ئادەمنى ئەخمەق قىلىپ.(سەت كۈلۈۋاتىمەن جۇمۇ)
ھە راست، بۇلاقلاپ قويدۇم، ماۋۇ يەردىن چۈشۈرۈۋېلىڭلار. چۈشۈرۈش
مەخپى نۇمۇرى:ttae
رەھمەت! باھا كۆزنىكى ئىشلىمەيتۇ، ساندانغا ئۇلىمىغاندكىن… :ھو ھاھا:
ھەقىقەتەن ياخشى چىقىپتۇ :ئاماق:
رەھمەت…
ئەسسالامۇ ئەلەيكۇم، ئاداش بۇنىڭدىكى كودلارنىڭ ھەممىنى قولدا يېزىپ چىقىدىغان گەپمۇ يا بەزىلىرى ئاپتۇماتىك ھاسىل بولامدۇ؟ java دا بەزىلىرى ئاپتۇماتىك ھاسىل بولىدىكەن، لېكىن سەل مۇرەككەپ، چۈشىنىكسىزراق ئىكەن. شۇڭا سوراپ باقتىم.
ۋەئەلەيكۇم ئەسسالام! ئاساسلىق قۇرۇلمىسى ئاپتوماتىك شەكىللىنىدۇ، كونتىروللارغا بەلگىلەنگەن ئىش نامىنى باسقان ھامان مۇناسىپ #C ئىش قۇرۇلمىسى ھاسىل بولىدۇ، ئاندىن قالغان فونكىسىيەلەرنى شۇ يازىدىغان گەپ. ئەلۋەتتە VS نى سىلىمۇ ئىشلىتىپ باققان، باش ھەرىپنى بېسىپ بولغۇچە مۇناسىۋەتلىك مىقدارلار تەييار.
ئالدى بىلەن ھۇزۇرلاندىم . ئاندىن شۇنداق قېيىشىپ كەتتىم ، پەقەت ئۈنۈمنى كۆرەلمىدىم . كىيىن بايقىسام ئىشلىتىۋاتقان سىستىمام ئۇبۇنتۇ ئىكەن . شۇنىڭ بىلەن نىمە بولسا بولسۇن دەپ قاچىلىسام بىر قېتىم ئىچىلىپلا كومپىيوتېرىم ئۆچۈپ قالدى. ئاندىن سېلىگە ئنكاس يازماقچى بۇلۇپ مەكتەپنىڭ كومپىيوتېر ئۆيىگە كىرىپ خاتىرە كومپىيوتېرىمنى چېتىپلا ئىزدەش رامكىسىدىن تەشنايى دەپ ئىزدىسەم بىرنەچچە ھۆججەت قىسقۇچى ئېچىلدى . قارىسام بىرىنچىسى سىلىكەنلا … ئاندىن بىرقۇر يازدىم ، ئىككى قۇريازدىم ،كەينىنى قانداق بولدى ئۇقالمىدىم ، نۇرغۇن يېزىلىپ كېتىپتۇ . ئەمدى مىنىڭ ھەم بۇنى كۆرگەنلەرنىڭ ۋاقتى ئىسراپ بولمىسۇن دەپ ،ئالدى كەينىگە ئىزاھات بەلگىسى يېزىپ قويدۇم .
شۇنداق قىلىپ كومپىيوتېرنىڭ بۇزۇلىشىغا سەۋەبچى بولدۇمما؟ تولۇق چۈشەنمىدىم ماۋۇ گەپلەرنى ھوي، نېمىنى بىر قۇر ۋاي يەنە بىر قۇر يازغانسىلە؟ :ھا ھا: :ئىسىت:
VS2013 كەسپىي نەشرى بولسىلا ئىجرا بولاتتى ئەسلى…
ھەي، مەن سەل قىززىقچى دەڭە . سىزنى بىردەم كۈلىۋالسۇن دەپ مۇنداق يېزىپ قويسام تىزلا ئوقۇپ چۈشەنمەي قاپسىز نەدە ئۇبۇنتۇغا vs نى قاچىلىغىلى بۇلىدۇ . قايتا بىر ئوقۇپ بېقڭە ئەينا…