2017-06-23 23 views
1

WPFチャットアプリケーションに絵文字を追加したいと思います。私はwpfがその理由のために絵文字をイメージに置き換えているので、絵文字をサポートしていないことを知っています。 textBlockのインラインプロパティを使用してtextBlockに画像を追加していますが、画像の配置に問題があります。私は正しく整列するために絵文字イメージを作ることができません。私はそれがどのように見ているのスクリーンショットを共有しています。 WPFアプリケーションのTextBlockの絵文字

Screenshot of app window

This is how emoticon is looking

はちょうど私が唯一それがどのように見えるかを確認するために、コンストラクタ内の要素を追加していデモです。私は自分のコードも共有しています。

 @out.Inlines.Add(new Run("Hii, my name is Ajay!!")); 
     Image emo = new Image(); 
     emo.Height = 15; 
     emo.Width = 15; 
     emo.VerticalAlignment = VerticalAlignment.Bottom; 
     emo.Margin = new Thickness(3, 0, 0, 0); 
     emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute)); 
    // InlineUIContainer container = new InlineUIContainer(emo); 
     @out.Inlines.Add(emo); 

顔文字画像を正しく整列させる方法はありますか? textblockを使用しても問題ないですか、それとも他のコントロールを使用する必要がありますか?

ご協力いただきまして誠にありがとうございます。

+0

あなたが適切に整列して何を意味するかを明確にしてくださいもらえますか?右の写真を表示しますか? –

答えて

1

いくつかの潜在的なオプションは次のようになります。

は、画像上のTopマージンを設定します。それは別のオプションは、実行中の画像をラップし、BaselineAlignmentを設定することで、RIGHT、LEFT、TOPの形式でBOTTOM

emo.Margin = new Thickness(3, 4, 0, 0); 

です。 (私は画像と努力を続けると、最後の手段としてこれを使用しますが)

var imageRun= new Run(emo); 
imageRun.BaselineAlignment = BaselineAlignment.TextBottom; //experiment with the other enum options 
@out.Inlines.Add(imageRun); 

https://msdn.microsoft.com/en-us/library/system.windows.baselinealignmentは、テキストではなく画像を調整します。

var textRun = new Run("Hii, my name is Ajay!!"); 
textRun.Margin = experiment; 
textRun.BaselineAlignment = experiment; 
@out.Inlines.Add(textRun); 
+0

実際には、runのコンストラクタはパラメータとしてUIElementを取っていませんが、textRunのBaselineAlignmentを設定しようとしました。 –

+0

ありがとう! :) –

1

@Bill Tarbellが示唆したように私は試してみました。 最終作業コードは次のとおりです。

 var textRun = new Run("Hii, my name is Ajay!!"); 
     textRun.BaselineAlignment = BaselineAlignment.Center; 
     @out.Inlines.Add(textRun); 
     Image emo = new Image(); 
     emo.Height = 20; 
     emo.Width = 20; 
     emo.VerticalAlignment = VerticalAlignment.Bottom; 
     emo.Margin = new Thickness(3, 0, 0, 0); 
     emo.Source = new BitmapImage(new Uri(@"C:\Users\admin\Desktop\test1.jpg", UriKind.RelativeOrAbsolute)); 
     // InlineUIContainer container = new InlineUIContainer(emo); 
     @out.Inlines.Add(emo)