VB C# .NET Freamworkの備忘録

C#, VB.NET Freamworkの備忘録を掲載しています。 コントロール、WPF、スレッド、共通関数と実用的なコードを掲載してきます。

カテゴリ: WPF

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
‌ 
namespace WpfApplication4
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
‌ 
        private System.IO.FileSystemWatcher watcher;
        private DispatcherTimer displayTimer;
        private DispatcherTimer materialTimer;
‌ 
        public MainWindow()
        {
            InitializeComponent();
‌ 
            displayTimer = new DispatcherTimer();
            displayTimer.Tick += Display;
‌ 
            materialTimer = new DispatcherTimer();
            materialTimer.Tick += Material;              
‌ 
‌ 
            this.Loaded += (s, o) =>
                {
‌ 
‌ 
                    System.Threading.Thread thread = new System.Threading.Thread(() =>
                        {
                            int index = 0;
                            //while (index < 10)
                            while (true)
                            {
‌ 
                                Console.WriteLine(DateTime.Now.ToString() + "終了フラグチェック");
                                System.Threading.Thread.Sleep(1000);
                                index++;
                            }
‌ 
                            this.ExitProcess();
‌ 
                        });
‌ 
                    Console.WriteLine("終了フラグ監視");
                    thread.IsBackground = true;
                    thread.Start();
‌ 
‌ 
‌ 
                    watcher = new System.IO.FileSystemWatcher(@"C:\Users\arimura\Desktop", "*.txt");
                    watcher.NotifyFilter = System.IO.NotifyFilters.LastWrite;
                    watcher.IncludeSubdirectories = false;
                    //watcher.SynchronizingObject = this;
‌ 
                    //監視を開始する
                    watcher.EnableRaisingEvents = true;
                    Console.WriteLine("監視を開始しました。");
‌ 
                    watcher.Changed += FileChanged;
‌ 
                };
        }
‌ 
        protected void ExitProcess()
        {
            Console.WriteLine("終了処理");
            this.watcher.Changed -= FileChanged;
            this.displayTimer.Stop();
            this.materialTimer.Stop();
‌ 
‌ 
        }
‌ 
‌ 
        protected void FileChanged(object sender, System.IO.FileSystemEventArgs e)
        {
            //this.watcher.Changed -= FileChanged;
            Console.WriteLine("監視ファイル変更");
‌ 
‌ 
            displayTimer.Interval = TimeSpan.FromSeconds(5);
            displayTimer.Start();
    }
‌ 
        private int i = 0;
‌ 
        protected void Display(object sender, EventArgs e)
        {
            materialTimer.IsEnabled = true;
            Canvas.SetTop(this.txtaaa, 0);
‌ 
            Console.WriteLine("画面決定");
            i += 10;
            Canvas.SetLeft(this.txtaaa, i);
‌ 
            materialTimer.Interval = TimeSpan.FromSeconds(1);
            materialTimer.Start();
‌ 
        }
‌ 
        private int j = 0;
‌ 
        protected void Material(object sender, EventArgs e)
        {
            Console.WriteLine("素材決定");
            j += 10;
            Canvas.SetTop(this.txtaaa, i);
‌ 
        }
    }
‌ 
}

画面の分割



画面のサイズ変更にviewbox
http://blogs.msdn.com/b/shintak/archive/2008/05/28/8556173.aspx

画面の分割
http://yucchi3.cocolog-nifty.com/blog/2009/12/wpf-gridsplitte.html
http://cswpf.seesaa.net/article/313844016.html

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
---------------------------------------------------------

WPFで画像等ファイルをリソースやコンテンツとして利用する際の概念が
以下に示す。
http://msdn.microsoft.com/ja-jp/library/aa970069%28v=vs.80%29.aspx

ローカル アセンブリのプロジェクト フォルダのサブフォルダにある XAML リソース ファイルのパッケージ URI の例を次に示します。
pack://application:,,,/Subfolder/ResourceFile.xaml

実行可能アセンブリが起動される場所のサブフォルダに格納されている、XAML 起点サイト ファイルのパッケージ URI の例を次に示します。

pack://siteoforigin:,,,/Subfolder/SiteOfOriginFile.xaml




以下にコンテンツファイルの読み込み方法を示す。
Uri pageUri = new Uri("pack://siteoforigin:,,,/SiteOfOriginFile.xaml", UriKind.Absolute);
this.pageFrame.Source = pageUri;

同様にXAMLで書くと
<Frame Name="pageFrame" Source="pack://siteoforigin:,,,/SiteOfOriginFile.xaml" />



または、以下の読み込み方もある。

// Navigate to xaml page Uri uri = new Uri("/SiteOfOriginFile.xaml", UriKind.Relative); StreamResourceInfo info = Application.GetRemoteStream(uri); System.Windows.Markup.XamlReader reader = new System.Windows.Markup.XamlReader(); Page page = (Page)reader.LoadAsync(info.Stream); this.pageFrame.Content = page;

XAMLの読み込み
http://morio2.blogspot.jp/2012/12/xaml.html



WPF Imageの読み込みを行います。


        Dim imageFilePath As String = "みかん.jpg"
            If Not IO.File.Exists(imageFilePath) Then
                Dim folderPath As String = System.IO.Path.Combine("C:\フルーツ", "冬")
                imageFilePath = IO.Path.Combine(folderPath, imageData.ImageFilePath)
            End If
  
  
            ' 表示する場合
            If IO.File.Exists(imageFilePath) Then
                ' 画像が存在する場合
                Dim bi As New BitmapImage()
                bi.BeginInit()
                bi.CacheOption = BitmapCacheOption.OnLoad
                bi.UriSource = New System.Uri(imageFilePath, UriKind.Absolute)
                bi.EndInit()
  
                _image.Source = bi
  
             End If 

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

MediaElementで mp4 ファイルを再生するには



WindowsMediaPlayer12以降は標準で mp4再生用のコーデック(H264)が内部に入っています。
それ以前はフリーまたは有償のコーデックソフトをインストールし対応します。

詳細は以下を参照
http://www.gigafree.net/media/codec/

WindowsMediaPlayer12はWindows7で標準でインストールされています。
ただし、XP以前のパソコンはWindowsMediaPlayer11までしかアップグレードできません。 
そのため、再生する際は必ずコーデックソフトが必要になります。 

 XP、7でmp4を再生するソフトを作成時は、独自にDirectShow等を用いて、
MediaPlayerを作成すべきだと考えます。 

----------------------------------------------------------
VB C# .NET Freamworkの備忘録
http://ari-it.doorblog.jp/
javascriptの備忘録
http://ari-java.doorblog.jp/
--------------------------------------------------------- 

↑このページのトップヘ