我正在創建一個加載2個圖像的方法,對它們應用一些轉換(縮放/旋轉),然後在使用.NET Graphics類的另一圖像上的某個點上繪製它們。使用GDI和.NET應用轉換和組合位圖
我目前在嘗試的過程如下:
Load bmp1
Load bmp2
Create graphics object from bmp1
Apply tranformations
Save
Repeat process for bmp2
Instantiate new merged bmp obj
Create graphics object from merged bmp
Draw bmp1 & bmp2 on merged bmp
Save
我試圖用下面的代碼來做到這一點:
// load existing bmps
var bmp1 = new Bitmap(Path.Combine(_staticIconsPath, staticIcon.Filename));
var bmp2 = new Bitmap(Path.Combine(_movableIconsPath, movableIcon.Filename));
// apply transforms to bmp1
var canvas1 = Graphics.FromImage(bmp1);
canvas1.ScaleTransform(0.5f, 0.5f);
canvas1.RotateTransform(45.0f);
canvas1.Save();
// apply transforms to bmp2
var canvas2 = Graphics.FromImage(bmp2);
canvas2.ScaleTransform(0.5f, 0.5f);
canvas2.RotateTransform(45.0f);
canvas2.Save();
// create final merged bmp
var mergedBmp = new Bitmap(590, 590);
mergedBmp.SetResolution(bmp1.HorizontalResolution, bmp1.VerticalResolution);
// draw transformed images on to final bmp
var mergedCanvas = Graphics.FromImage(mergedBmp);
mergedCanvas.DrawImage(bmp1, 0, 0);
mergedCanvas.DrawImage(bmp2, 0, 0);
mergedCanvas.Save();
然而最終的結果僅僅是原來的兩個位圖是如預期的那樣彼此重疊,但沒有應用轉換。
我以前從未使用GDI或做過任何圖像處理,所以我認爲我誤解了必須遵循的過程的基本原理。任何人都可以幫助我並指出我朝着正確的方向嗎?
你試過嗎? – 2012-07-28 17:19:40
啊,好吧,我明白我現在失去了什麼。我已經更新了我的代碼,現在我已經開始工作了。謝謝你的幫助。 – jcvandan 2012-07-29 14:46:33