ユーザーコントロールをDLLでプログラムでインスタンス化し、後でPNGファイルとして保存する必要があります。これは、PngBitmapEncoderとRenderTargetBitmapでは一般的に問題ありません。WPFユーザーコントロールをプログラムでインスタンス化してPNGとしてレンダリングする
これが私の質問です:
- 私がコントロールをインスタンス化するにはどうすればよいですか?単に新しい演算子で?
- 個別のスレッドでインスタンス化する必要がありますか?
- どのようにしてコントロールがすべての子を更新し、再度レンダリングするようにするには?
これは(LetterFrequencyがユーザーコントロールである)ユーザーコントロールをインスタンス化し、PNGファイルとして保存するために私のコードです:
[STAThread]
static void Main(string[] args)
{
LetterFrequency let = new LetterFrequency();
let.Width = 600;
let.Height = 400;
let.Background = Brushes.White;
let.Measure(new Size(let.Width, let.Height));
let.Arrange(new Rect(new Size(let.Width, let.Height)));
let.UpdateLayout();
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)let.Width, (int)let.Height, 96d, 96d, PixelFormats.Pbgra32);
bitmap.Render(let);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(bitmap));
using (Stream stm = File.Create("test.png"))
{
png.Save(stm);
}
}
アプリをこのように実行した場合、それはPNGファイルを生成XAMLで追加されるデータは表示されません.XAMLデザイナーを調べると、いくつかのバブルを含むグラフが表示されます。 pngファイルにはグラフ領域のみが含まれていますが、気泡はありませんか?どうして?私は更新/レンダリングの問題だと思いますが、これをどのように解決するのですか?
Visual Studioソリューションでは、ユーザーコントロールをPNGファイルとチャートのWPFツールキットの2つのプロジェクトにレンダリングするコンソールプロジェクトが含まれています。
はそれを見てください、それはexeファイル、フォルダ内のそれぞれのbin /デバッグでPNGファイルを生成します:http://www.file-upload.net/download-1904406/ChartRenderBitmap.zip.html
は、それが問題なく動作します願っています!
ありがとうございます!
はあなたの興味深いソリューションをありがとう、しかし、チャートの生成が可能な限り高速で行う必要がありますので、何のアニメーションは最高ないだろう。アニメーションをオーバーライドするために、バブルデータポイント用の新しいコントロールテンプレートを作成しましたが、凡例アイテムにもう1つ問題があります。私の答えのポストを見てください! –