Azure ワーカー ロールで WPF を使用して、複数の画像を 1 つの画像に合成し、ディスクに保存しています。エミュレーターではすべて正常に動作しますが、Azure にデプロイすると、スケーリング/サイズ変更された画像が表示されると予想される領域が完全に黒くなります。
コードをコンソール アプリにパッケージ化し、リモート デスクトップを使用して、worker ロールをホストする同じインスタンスにコピーしました。そのアプリは完全に正常に動作します。これは、コードを実行できるようにするために必要なものがすべてバニラの Azure インスタンスに存在することを示しています。
WPF 画像処理に干渉する可能性のある worker ロールのコンテキストで実行する場合の違いは何ですか?
更新 これは特に 3D 変換にのみ影響します。疑似コードでは、次のようなことをしています。
- メッシュを作成し、テクスチャを適用して、
ModelVisual3D
- を作成
Viewport3DVisual
し、正投影カメラをセットアップして、ModelVisual3D
- ビューポートを
RenderTargetBitmap
- を使用して「シーン キャンバス」
DrawingContext.DrawImage()
に描画します。RenderTargetBitmap
3D が必要ない場合は、画像もスケーリングされて追加さDrawingContext.DrawImage()
れます。それはうまくいっています。したがって、この問題はRenderTargetBitmap
、3D シーンから を作成または使用することに何らかの形で関連しています。
更新 デスクトップと対話していない場合、WPF は 3D コンテンツをレンダリングしないことが判明しました。エミュレーターは個人のユーザー コンテキストで実行されますが、Azure ではシステム アカウントとして実行されます。ローカル システムとしてログオンする Windows サービスを作成し、同じ手順に従うことで、問題をローカルに再現できます。それを回避することは、おそらく大きな課題になるでしょう。代わりに VM を使用する必要があるかもしれません。