ASP.netテクノロジ概要

ASP.netは大まかに ASP.net WebForm ASP.net WebPages ASP.net MVC の3つにわかれます。   WebForm WebFormとはサーバーコントロールというものを用いてWebサイトをつくります。 サイトファイルの拡張しは.aspx デザイナーでコントロールを配置し、コードビハインドにロジックコードを記述することでWinFormに似た方法でプログラミングできます。 ただ、技術的にも古く、サーバーコントロールという概念が最近のWebテクノロジと合わないということもあってモダンな技術とは言えません。     WebPages Razor構文と呼ばれる記述方法でhtml内にC#コードを埋め込むことで最近のWebテクノロジとC#の親和性の高いページを作れます。 ファイルの拡張子は.cshtml WebMartrixなどの登場により、簡単に、素早く、軽いWebサイトを作れるので便利 たぶん今はこれが主流     ASP.net MVC ASP.netのWebサイトをMVCフレームワーク(Model-View-Controller)で作ります。 Viewとロジックを異なったファイルに記述できるので大規模Webサイト向け。 簡単なサイトを作ろうと思ったとき、作らなければいけないファイルが多くなるので簡単なサイトを作るだけならWebPagesを使うべきだと思います。      

VisualStudioでWebsiteを作る

Webサイトを作る VisualStudioのメニューバーから[ファイル]→[新規作成]→[プロジェクト]を押します。   インストール済みテンプレートから、Web→VisualStudio2012と進み、[ASP.NET空のWebアプリケーション]をクリックします。 名前に[TestWebPage]と入力し、OKを押します。 Pageを追加する プロジェクトが作成できたら、メニューバー→[プロジェクト]→[新しい項目の追加]を押します。   左のテンプレートから、[VisualC#]→[Web]→[Razor]を選択し、 Webページ(Razor v3)を選択。 名前を[index.cshtml]として追加を押します。 indexとはそのディレクトリへHttpアクセスが起こったときに最初にアクセスされるページの名前です。ほかにもDefault.cshtmlなどがあります。 Htmlを編集する 追加できたら、index.cshtmlを以下のように編集しましょう。 <!DOCTYPE html> <html> <head> <title>テストWebsite</title> </head> <body> ほげほげ </body> </html>   Webサイトを実行します。 ツールバーの緑色の三角形を押します。   Webサイトを実行できました。   普通のHTMLタグが使用できます。 <!DOCTYPE html> <html> <head> <title>テストWebsite</title> </head> <body> <h2>ほげほげ</h2> </body> </html>  テスト実行ブラウザを変更する また、ツールバーの緑色の三角形の横の三角形を押すことでインストールされているさまざまなブラウザでテスト実行することができます。    

MediaCaptureで動画を撮るには

MediaCapture カメラで動画をとるだけならCameraCaptureUIを使うと楽に動画を撮ることができます。 しかし、CameraCaptureUIは既存のUIを使用するので自分でキャプチャ部分を定義できません。   自由度が高く、独自のUIを使って写真を撮りたいならMediaCaptureを使います。   まずはデバイス列挙をしてどのカメラを使うかを選択します。 DeviceClass.VideoCaptureを指定することでカメラデバイスだけを列挙することができます。 DeviceClass.AudioCaptureを指定することでオーディオデバイスだけを列挙することができます。 今回は0番目のカメラ、0番目のマイクを使用します。 DeviceInformationCollection videoDevices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); DeviceInformation cameraId=videoDevices.ElementAt(0); DeviceInformationCollection audioDevices =await DeviceInformation.FindAllAsync(DeviceClass.AudioCapture); DeviceInformation audioId = audioDevices.ElementAt(0); そしてMediaCaptureInitializationSettingでVideoDeviceIdとAudioDeviceIdを指定します。 var setting = new MediaCaptureInitializationSettings(); setting.VideoDeviceId = cameraId.Id; setting.AudioDeviceId = audioId.Id; await mediaCapture.InitializeAsync(setting);   現在カメラで写している画面をPreviewするためにcaptureElementコントロールをXAMLに配置し、 そのSourceにmediaCaptureのインスタンスを渡します。 <CaptureElement x:Name=”captureElement” />   captureElement.Source = mediaCapture; WindowsPhoneの場合、Preview画面が270度回転してしまっているので270度回転させておきます。 #if WINDOWS_PHONE_APP mediaCapture.SetPreviewRotation(VideoRotation.Clockwise270Degrees); #endif  …

MediaCpatureで写真を撮るには

MediaCapture カメラで写真をとるだけならCameraCaptureUIを使うと楽に写真を撮ることができます。 しかし、CameraCaptureUIは既存のUIを使用するので自分でキャプチャ部分を定義できません。   自由度が高く、独自のUIを使って写真を撮りたいならMediaCaptureを使います。   まずはデバイス列挙をしてどのカメラを使うかを選択します。 DeviceClass.VideoCaptureを指定することでカメラデバイスだけを列挙することができます。 今回は0番目のカメラを使用します。 DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture); DeviceInformation cameraId=devices.ElementAt(0);   MediaCaptureInitializationSettingでどのデバイスを使うのかIdを設定します。 var setting = new MediaCaptureInitializationSettings(); setting.VideoDeviceId = cameraId.Id;   次にMediaCaptureをnewし、InitializeAsyncでカメラの初期化を行います。 このとき、先ほど作ったMediaCaptureInitializationSettingを引数にいれます。 InitializeAsyncに何も引数をいれない場合、どれか一つのWebカメラが使用されます。 MediaCapture mediaCapture = new MediaCapture(); await mediaCapture.InitializeAsync(setting);   現在カメラで写している画面をPreviewするためにcaptureElementコントロールをXAMLに配置し、 そのSourceにmediaCaptureのインスタンスを渡します。 <CaptureElement x:Name=”captureElement” />   captureElement.Source = mediaCapture; WindowsPhoneの場合、Preview画面が270度回転してしまっているので270度回転させておきます。 #if WINDOWS_PHONE_APP mediaCapture.SetPreviewRotation(VideoRotation.Clockwise270Degrees); #endif   ここまでで初期化は完了です。  …

StorageFileをアプリデータとして取り込むには

例えば画像ファイルなどをアプリ内でキャッシュするためにアプリ内データとして取り込みたいとして、いちいちbyteデータに変換してまたApplicationData.LocalFolderないにファイルを作り書き込むぐらいならStorageFileごとコピーしてしまった方が簡単でコストがかかりません。 StorageFileはCopyAsyncメソッドで任意のStorageFolderにファイルをコピーすることができます。   画像データの場合、StorageFileごとApplicationData.Current.LocalFolderにコピーを作り、そのパスをImageコントロールのSourceに設定すると楽です。 //Storageファイルを取得 FileOpenPicker picker = new FileOpenPicker(); picker.FileTypeFilter.Add(“.png”); IStorageFile file = await picker.PickSingleFileAsync(); //アプリデータへの取り込み StorageFolder folder=ApplicationData.Current.LocalFolder; IStorageFile innerFile=await file.CopyAsync(folder,”hogehoge.png”); image.Source =new BitmapImage(new Uri(innerFile.Path));