これに関連するソースから次のコードを抽出しました。
using (Bitmap spriteBitmap = new Bitmap(Width, Height, PixelFormat.Format32bppArgb))
{
using (Graphics spriteGraphics = Graphics.FromImage(spriteBitmap))
{
Rectangle imageRect = new Rectangle(0, 0, imageInfo.Width, imageInfo.Height);
using (Bitmap clonedImageBitmap = imageInfo.ImageBitmap.Clone(imageRect, spriteBitmap.PixelFormat))
{
clonedImageBitmap.SetResolution(spriteBitmap.HorizontalResolution, spriteBitmap.VerticalResolution);
spriteGraphics.DrawImage(
clonedImageBitmap,
mappedImageInfo.X, mappedImageInfo.Y,
imageRect,
GraphicsUnit.Pixel);
spriteGraphics.Flush(FlushIntention.Flush);
}
imageInfo.DisposeBitmap();
}
}
このコードは、Azure のコンピューティング エミュレーターでローカルに完全に機能します。しかし、それを展開してコードを実行すると、もはや機能せず、spriteGraphics.DrawImage で有名な ArgumentException "Parameter is not valid" で失敗します。
テスト目的で、clonedImageBitmap の詳細をログに記録して、何かが異なるかどうかを確認しました。ローカルとクラウドで同じではないことがわかった唯一のものは.Flagsです->ローカルには77842があり、クラウドには77846があるため、ImageFlagsHasTranslucentが設定されているようですが、それがクラウドで問題を引き起こし、これがどのように発生するかできることは、現時点では私の知識を超えています。
おそらく誰かが奇妙な問題で私を助けることができますか?
前もって感謝します。
HeManNew