de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 t0nty
t0nty
質問

画像を変更した後にwpfウィンドウに画像を再ロードする

最近私はWPFとC#で作業していました、そして、私はA4ページ(A4のサイズのJPGテンプレート)のためにエディタを作りたかったです

問題は、JPGの特定の場所にテキストを配置し、そのテキストを書くときにそれを表示できるようにすることです(ライブプレビューのように)。

これは私が今までに達成したものです:

XAML



    
        
            
                
                
                

            

            
                בחר מוצר
            

            
            
                באנרים
                שקפים וניירות
                וינילים
                קשיחים הדפסה ישירה
                הדבקה
            

            
            

                
            
                
                    
                        
                        
                    

                    
                    
                    

                    
                    
                    

                    
                    
                    

                
            
            

        

    

C#

    public partial class MainWindow : Window
{
    public MainWindow() => InitializeComponent();

    DateTime today = DateTime.Today.Date;

    String path = @"/Resources/a4.jpg";

    Bitmap order = null;

    Font f = new Font("Arial", 200, GraphicsUnit.Pixel);

    private void getDate(object sender, RoutedEventArgs e)
    {
        String t = today.ToShortDateString();
        todaysDate.Text = t;
    }


    private void drawSO(object sender, DependencyPropertyChangedEventArgs e)
    {

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        String orderNum = SO.Text;
        using (var stream = File.OpenRead(path))
        {
            order = (Bitmap)Bitmap.FromStream(stream);
        }
        using (order)
        using (var graphics = Graphics.FromImage(order))
        using (f)
        {
            graphics.DrawString(orderNum, f, System.Drawing.Brushes.White, order.Height/2, order.Width/2);
            order.Save(path);
        }

    }
}

重要なのは、( Button_Click()でわかるように)ボタンをクリックするだけでプログラムにテキストを書き込ませることですが、私は SO Number <に書き込むテキストを表示したいのですそれを書いている間/ strong>テキストボックス。 テキストを書き込んだときやボタンクリックイベントでしないときに、ウィンドウの画像ビューを更新する方法はありますか。

これが一例です。 テキストボックスに入力したテキストがjpgになるようにします

I want the text entered in the text box will be on the jpg

0 2018-08-31T08:58:09+00:00 4
 t0nty
t0nty
編集された質問 31日 8月 2018 в 11:24
プログラミング
wpf
image
c#
data-binding
xaml
XAMlMAX
31日 8月 2018 в 9:20
2018-08-31T09:20:53+00:00
さらに
ソース
編集
#80557583

TextBox の Text を使用するには、 TextBlock の Text プロパティをバインドするだけです。
そのようです:

  

UPDATE

コメントと編集した質問の後。

TextBlock を Image の後にグリッドで配置してから、すべてのビジュアルを含めて新しいイメージを生成することができます。
これは次のようになります。


    
    
  

次に、このようにjpegとして保存します。

Image myImage = new Image();
FormattedText text = new FormattedText("ABC",
    new CultureInfo("en-us"),
    FlowDirection.LeftToRight,
    new Typeface(this.FontFamily, FontStyles.Normal, FontWeights.Normal, new 
FontStretch()),
    this.FontSize,
    this.Foreground);

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawText(text, new Point(2, 2));
drawingContext.Close();

RenderTargetBitmap bmp = new RenderTargetBitmap(180, 180, 120, 96, 
PixelFormats.Pbgra32);
bmp.Render(drawingVisual);//In here you could just pass the name of the grid "imageToExport"
myImage.Source = bmp;  

NOTE
Please note the code for saving the visual is from MSDN




1
0
mm8
31日 8月 2018 в 1:29
2018-08-31T13:29:03+00:00
さらに
ソース
編集
#80557585

ボタンをクリックするだけでプログラムにテキストを書き込ませることができます( Button_Click()を参照)。ただし、SO Numberテキストに書き込んだテキストを表示したい Button clickイベントではなく、テキストを書き込むときにウィンドウ上の画像ビューを更新する方法はありますか?

Button の Click イベントを処理する代わりに、 TextBox の TextChanged イベントを処理してください。



private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    String orderNum = SO.Text;
    using (var stream = File.OpenRead(path))
    {
        order = (Bitmap)Bitmap.FromStream(stream);
    }
    using (order)
    using (var graphics = Graphics.FromImage(order))
    using (f)
    {
        graphics.DrawString(orderNum, f, System.Drawing.Brushes.White, order.Height/2, order.Width/2);
        order.Save(path);
    }
}

イベントハンドラはキーを押すたびに呼び出されることに注意してください。パフォーマンス上の理由からこれが望ましくない場合は、 string プロパティへのバインドを検討し、推奨されているようにある程度の遅延を実装することをお勧めします。/wpf-45バインディングの更新にノイズを減らすための遅延を追加する "rel =" nofollow noreferrer ">こちら

1
0
mm8
31日 8月 2018 в 1:29
2018-08-31T13:29:03+00:00
さらに
ソース
編集
#80557586

ボタンをクリックするだけでプログラムにテキストを書き込ませることができます( Button_Click()を参照)。ただし、SO Numberテキストに書き込んだテキストを表示したいのです。 Button clickイベントではなく、テキストを書き込むときにウィンドウ上の画像ビューを更新する方法はありますか?

Button の Click イベントを処理する代わりに、 TextBox の TextChanged イベントを処理してみます。



private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    String orderNum = SO.Text;
    using (var stream = File.OpenRead(path))
    {
        order = (Bitmap)Bitmap.FromStream(stream);
    }
    using (order)
    using (var graphics = Graphics.FromImage(order))
    using (f)
    {
        graphics.DrawString(orderNum, f, System.Drawing.Brushes.White, order.Height/2, order.Width/2);
        order.Save(path);
    }
}

イベントハンドラはキーを押すたびに呼び出されることに注意してください。パフォーマンス上の理由からこれが望ましくない場合は、 string プロパティへのバインドを検討し、推奨されているようにある程度の遅延を実装することをお勧めします。/wpf-45バインディングの更新にノイズを減らすための遅延を追加する "rel =" nofollow noreferrer ">こちら

1
0
mm8
31日 8月 2018 в 1:29
2018-08-31T13:29:03+00:00
さらに
ソース
編集
#80557587

ボタンをクリックするだけでプログラムにテキストを書き込ませることができます( Button_Click()を参照)。ただし、SO Numberテキストに書き込んだテキストを表示したいのです。 Button clickイベントではなく、テキストを書き込むときにウィンドウ上の画像ビューを更新する方法はありますか?

Button の Click イベントを処理する代わりに、 TextBox の TextChanged イベントを処理してみます。



private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    String orderNum = SO.Text;
    using (var stream = File.OpenRead(path))
    {
        order = (Bitmap)Bitmap.FromStream(stream);
    }
    using (order)
    using (var graphics = Graphics.FromImage(order))
    using (f)
    {
        graphics.DrawString(orderNum, f, System.Drawing.Brushes.White, order.Height/2, order.Width/2);
        order.Save(path);
    }
}

イベントハンドラはキーを押すたびに呼び出されることに注意してください。パフォーマンス上の理由からこれが望ましくない場合は、 string プロパティへのバインドを検討し、推奨されているようにある程度の遅延を実装することをお勧めします。/wpf-45バインディングの更新にノイズを減らすための遅延を追加する "rel =" nofollow noreferrer ">こちら

1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Денис Анненский
登録済み 2日前
2
365
登録済み 6日前
3
True Image
登録済み 1週間前
4
archana agarwal
登録済み 1週間前
5
Maxim Zhilyaev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属