2008-11-10 164 views
2

我使用一些自定義控制其中之一是一個工具提示控制器,可以顯示圖像,所以我使用第ebelow代碼以實例化它:.NET設置的圖像顯示尺寸

Image newImage = Image.FromFile(imagePath); 
e.ToolTipImage = newImage; 

顯然可以內聯,但現在只是測試。麻煩的是,圖像有時是錯誤的大小,有沒有辦法設置顯示大小。我目前看到的唯一方法是使用GDI +或類似的東西編輯圖像。當我只想調整顯示大小而不影響實際圖像時,看起來像很多額外的處理。

回答

1

從源文件加載圖像對象後,高度和寬度(以及大小和所有輔助屬性)都是隻讀的。因此,您堅持使用GDI +方法在RAM中調整其大小,然後相應地顯示它。

你可以採取很多方法,但是如果你想把它封裝到一個庫中,如果這個問題再次發生,你可以重新使用這個庫,你將被設置去。這是不完全優化(即,可能有一些錯誤),但應該給你如何對待它的想法:

Image newImage = Image.FromFile(myFilePath); 
Size outputSize = new Size(200, 200); 
Bitmap backgroundBitmap = new Bitmap(outputSize.Width, outputSize.Height); 
using (Bitmap tempBitmap = new Bitmap(newImage)) 
{ 
    using (Graphics g = Graphics.FromImage(backgroundBitmap)) 
    { 
     g.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     // Get the set of points that determine our rectangle for resizing. 
     Point[] corners = { 
      new Point(0, 0), 
      new Point(backgroundBitmap.Width, 0), 
      new Point(0, backgroundBitmap.Height) 
     }; 
     g.DrawImage(tempBitmap, corners); 
    } 
} 
this.BackgroundImage = backgroundBitmap; 

我做了測試,和它的工作。 (它創造了我的桌面壁紙之一的200×200大小的版本,然後設置爲在臨時WinForms項目主要形式的背景圖像。你需要爲System.Drawingusing報表和System.Drawing.Drawing2D

+0

謝謝我的想法是顯示器的大小與實際的圖像分辨率是分開的......所以它應該可以單獨修改而不需要真正的編輯圖像,但可能不是。 – PeteT 2008-11-10 16:24:33

+0

不幸的是,沒有...希望(修改後的版本)這可以幫你。 :) – 2008-11-10 16:54:39

0

在的WinForms,如果你在PictureBox控件中包含圖像,PictureBox控件可以設置爲放大到特定的高度/寬度,並且圖像應該符合

至少這就是我做Head First C#書時發生的事情