問題: 用C# GDI/GDI+ 編寫了一個 圖形輸出模塊, 圖形輸出時,用 bitmap 作為畫布(輸出格式必須是 bitmap),輸出時 采用 1451*1441 像素 的分辨率,圖形的放縮比是26*36,那么要求輸出的bitmap 至少是 40000*40000 的bitmap (bitmap 的像素大小是: 1451*26,1441*36 ) 。 但是 直接在 bitmap 中創(chuàng)建一個 bitmap ,如: Bitmap map = new Bitmap(Convert.ToInt32(40000), Convert.ToInt32(40000), PixelFormat.Format32bppArgb); 系統(tǒng) 會拋出 內存溢出的問題。
如果要解決這個問題: 首先需要 (1)graphics 圖形數據 從接口中 轉化成 bmpfile 的一種文件流的形式,或 byte數據。 但是 在C# GDI/GDI 中 ,我沒找到接口可以調用。 我看了java kpi graphics 可以通過 bufferImage的形式導出,但是C# 寫這些邏輯,很復雜,涉及顏色等,一堆異常,這一點目前沒找到解決方法;
(2)通過byte 類型的數據 或 stream的形式,申請不連續(xù)的空間地址來存生成bitmap, 其中要設置bitmap的分辨率,像素大小,PixelFormat.Format1bppIndexed 指定格式為每像素1位,可能用到Seek()的尋址空間來操作。
被這個問題困擾很久了,希望前輩們能伸出援助,不勝感激,謝謝。
|