2011-06-27 63 views
1

我的應用程序用於爲飛行模擬器設計機場。用戶可以添加一個或多個圖像作爲背景。圖像的尺寸可以精確確定,然後用作模板來放置跑道,圍裙等特徵。如何處理圖像作爲CAD應用程序的背景

我使用第三方圖形庫(Piccolo),它有一個圖像類(據我可以看到它是一個簡單的System.Drawing.Image包裝)。

到目前爲止,除了允許用戶添加圖像,調整大小等外,我所做的工作量很少。毫不奇怪,用戶有時會抱怨糟糕的表現。我們告訴他們不要加載大圖片(高達100k似乎可以),但不要阻止它們,並且100Mb位圖已經被使用,並帶來可怕的結果。

我需要通過幾種方法解決這個問題。首先將它們使用的任何圖像轉換爲高效的格式(大小vs定義),其次通過確保加載的圖像的尺寸適合尺寸 - 目前我沒有做任何具體的處理2000年的尺寸調整x 2000圖像以適應顯示器的500 x 500區域。

該應用程序默認的1:1顯示器代表每像素1米。一旦用戶調整圖像大小以適應圖像的準確性,我認爲圖像的最佳分辨率是將圖像重新採樣到該尺寸是正確的?我知道,如果用戶放大1:1的比例,他們可能會做的,那麼圖像的清晰度就會下降。

我對處理圖像的無知是完整的。我首先查看了一些圖像操作庫(ImageMagick和免費版的dotIamge),用於將輸入圖像轉換爲標準圖像,第二個用於調整大小 - 重採樣。事實是,他們所做的遠遠超過我的需要。

任何指針非常讚賞。

回答

2

是的,重新採樣,以便位圖不必經常重新調整每個油漆應該有很大的不同。默認的Graphics.InterpolationMode製作漂亮的圖像,但不便宜。

另一大問題是位圖的像素格式。格式32bppPArgb比大多數視頻適配器上的其他格式快10倍。

private static Bitmap Resample(Image img, Size size) { 
     var bmp = new Bitmap(size.Width, size.Height, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); 
     using (var gr = Graphics.FromImage(bmp)) { 
      gr.DrawImage(img, new Rectangle(Point.Empty, size)); 
     } 
     return bmp; 
    } 
+0

謝謝 - 我正在對此進行一些測試。 – ScruffyDuck

相關問題