失敗,我從源中提取下面的代碼是有關這個:代碼的DrawImage本地工作,但在Azure中有一個ArgumentException
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();
}
}
此代碼工作完美局部與蔚藍的計算模擬器。但是當我部署它並執行代碼時,它不再工作,並且在着名的ArgumentException「參數無效」的spriteGraphics.DrawImage失敗。
出於測試目的,我記錄了clonedImageBitmap的細節以查看是否有不同之處。我發現的唯一不同於本地和雲中的是.Flags - >本地我擁有77842,並且在雲77846中似乎設置了ImageFlagsHasTranslucent,但如果這導致了雲中的問題以及此問題可以超越我目前的知識。
也許有人可以幫我解決這個奇怪的問題?
在此先感謝。
HeManNew
感謝您的解釋。不幸的是,我不知道使用Azure的System.Drawing是不可取的,但該功能(動態生成Css Sprites)是我的應用程序所必需的,所以我無法排除這一點。但是,對於我來說,在計算模擬器的本地開發中,一切都運行良好。 – HeManNew
原因非常簡單,因爲System.Drawing類依賴於基於顯示特定組件(即較低層庫和驅動程序)的GDI。這是您的計算機和Windows Azure計算機之間的主要區別。雲計算機中的GDI特定模塊無法與使用桌面上的性能和功能相匹配,以及爲什麼使用這些API時要小心 – AvkashChauhan