none
VB→C# RRS feed

  • 質問

  •  If myJoint.JointType = JointType.Head AndAlso myMask <> String.Empty Then
            myImage = New Image
            With myImage
                .Width = 60
                .Height = 75
                .Source = New BitmapImage(New Uri(myMask, UriKind.Relative))
            End With

    これをWPFで書くにはどう変換すればよいですか。

    2017年1月20日 7:54

回答

  • 単純にVB.Netに対応するC#へのコードの変換ということでしょうか

    //using System;
    //using System.Windows.Media.Imaging;
    //using System.Windows.Controls;
    
    if (myJoint.JointType == JointTYpe.Head && myMask != string.Empty)
    {
        myImage = new Image();
        myImage.Width = 60;
        myImage.Height = 75;
        myImage.Source = new BitmapImage(new System.Uri(myMask, UriKind.Relative));
    }


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年1月20日 8:43
  • 元ネタは、薬師寺さんの Kinect コードでしょうか。

    C# に翻訳するのであれば、myMask が空だった場合にも対応しておいた方が良さそうです。

    VB の「If Nothing <> String.Empty Then」は False ですが、
    C# の「if ( null != String.Empty )」は true なので、
    String.IsNullOrEmpty に変更しました。もしくは、null 判定のコードを追加しても良いですね。

    if (myJoint.JointType == JointTYpe.Head && String.IsNullOrEmpty(myMask))
    {
        myImage = new Image() { Width = 60, Height = 75 };
        myImage.Source = new BitmapImage(new Uri(myMask, UriKind.Relative));
    }

    2017年1月20日 11:07
  • > これをWPFで書くにはどう変換すればよいですか。

    もしかして、下記スレッドに関連する質問でしょうか。

    https://social.msdn.microsoft.com/Forums/ja-JP/766b2875-1f32-4995-b5e7-ba07eecec8fd/listbox?forum=vsgeneralja

    でしたら、ただコードをC#へ移植するだけでなく、

    1.まず Uri をプロパティに持つクラスを用意
    2.上記クラスを管理するコレクションを用意
    3.ListBox のデータテンプレートを編集し、アイテムの要素にImage クラスを持たせる
    4.ListBox にコレクションをバインドする


    という流れになると思います。

    WPF による開発は、コードビハインドではなく MVVM パターン等を使ったバインディングが基本になるため、初心の方には若干理解しづらいものがあるかと思います。詳しくは以下の記事をご覧ください。

    WPFの「データ・バインディング」を理解する 


    本フォーラムは、ユーザー(開発者)同士で情報交換を行うためのコミュニティです。初めて利用される方は、以下のアナウンスをご覧ください。 https://social.msdn.microsoft.com/Forums/ja-JP/ca9ecfb7-4407-4fcb-b8bd-207d68257e68?


    2017年1月21日 6:13
    モデレータ

すべての返信

  • 単純にVB.Netに対応するC#へのコードの変換ということでしょうか

    //using System;
    //using System.Windows.Media.Imaging;
    //using System.Windows.Controls;
    
    if (myJoint.JointType == JointTYpe.Head && myMask != string.Empty)
    {
        myImage = new Image();
        myImage.Width = 60;
        myImage.Height = 75;
        myImage.Source = new BitmapImage(new System.Uri(myMask, UriKind.Relative));
    }


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年1月20日 8:43
  • 元ネタは、薬師寺さんの Kinect コードでしょうか。

    C# に翻訳するのであれば、myMask が空だった場合にも対応しておいた方が良さそうです。

    VB の「If Nothing <> String.Empty Then」は False ですが、
    C# の「if ( null != String.Empty )」は true なので、
    String.IsNullOrEmpty に変更しました。もしくは、null 判定のコードを追加しても良いですね。

    if (myJoint.JointType == JointTYpe.Head && String.IsNullOrEmpty(myMask))
    {
        myImage = new Image() { Width = 60, Height = 75 };
        myImage.Source = new BitmapImage(new Uri(myMask, UriKind.Relative));
    }

    2017年1月20日 11:07
  • > これをWPFで書くにはどう変換すればよいですか。

    もしかして、下記スレッドに関連する質問でしょうか。

    https://social.msdn.microsoft.com/Forums/ja-JP/766b2875-1f32-4995-b5e7-ba07eecec8fd/listbox?forum=vsgeneralja

    でしたら、ただコードをC#へ移植するだけでなく、

    1.まず Uri をプロパティに持つクラスを用意
    2.上記クラスを管理するコレクションを用意
    3.ListBox のデータテンプレートを編集し、アイテムの要素にImage クラスを持たせる
    4.ListBox にコレクションをバインドする


    という流れになると思います。

    WPF による開発は、コードビハインドではなく MVVM パターン等を使ったバインディングが基本になるため、初心の方には若干理解しづらいものがあるかと思います。詳しくは以下の記事をご覧ください。

    WPFの「データ・バインディング」を理解する 


    本フォーラムは、ユーザー(開発者)同士で情報交換を行うためのコミュニティです。初めて利用される方は、以下のアナウンスをご覧ください。 https://social.msdn.microsoft.com/Forums/ja-JP/ca9ecfb7-4407-4fcb-b8bd-207d68257e68?


    2017年1月21日 6:13
    モデレータ
  • フォーラム オペレーターの栗下 望です。
    Tsyuge さん、こんにちは。

    「Visual Studio 共通 フォーラム」カテゴリにつきましては、
    基本的にVisual Studio IDE など言語に依存しない共通の話題をご投稿いただいているカテゴリでございます。
    今回のご質問の内容から「Windows Presentation Foundation ( WPF ) 」カテゴリのほうが情報が集まりやすいと思いましたので私のほうで移動させていただきました。

    .Net Framework > Windows Presentation Foundation ( WPF )

    ご自身のスレッドは、「クイックアクセス」の「マイスレッド」の一覧で確認することが出来ます。
     
    フォーラム ユーザーから回答をいただいていますので、
    回答が参考になりましたら「回答としてマーク」を設定いただけますようお願いいたします。


    MSDN/TechNet Community Support 栗下 望


    2017年1月23日 8:21
    モデレータ