Dot-Net
.NET:Graphics.DrawImageUnscaled 有什麼作用?
眾所周知,如果您繪製圖像,例如:
graphics.DrawImage(image, top, left);圖像將被縮放。這是因為
DrawImage查看圖像的 dpi 設置(例如 photoshop 中的 72dpi),並縮放圖像以匹配目標顯示(通常為 96dpi)。如果要在不進行任何縮放的情況下繪製圖像,則必須明確給出
DrawImage圖像的大小:graphics.DrawImage(img, top, left, img.Width, img.Height);我從多年的 GDI+ 程式中知道這一點。同樣的事實存在於
System.Drawing圍繞 GDI+ 的 .NET 包裝器中——如果你想繪製一個未縮放的圖像,你必須強制它縮放到原始大小。
DrawImageUnscaled這就是為什麼我對在 .NET中找到一種方法印象深刻的原因:graphics.DrawImageUnscaled(img, top, left);除了圖像仍然被縮放;使其等同於:
graphics.DrawImage(img, top, left);如果要繪製未縮放的圖像,則必須繼續呼叫:
graphics.DrawImage(img, top, left, img.Width, img.Height);這讓我想到了我的問題:
DrawImageUnscaled如果不繪製未縮放的圖像怎麼辦?來自 MSDN
在座標對指定的位置使用其原始物理尺寸繪製指定圖像。
在座標對指定的位置使用其原始物理尺寸繪製指定圖像。
在指定位置以指定大小繪製指定 Image。
也可以看看
那麼
Graphics.DrawImageUnscaled Method (Image, Int32, Int32)沒有做任何不同的事情DrawImage (Image, Int32, Int32)例如
public void DrawImageUnscaled(Image image, int x, int y) { this.DrawImage(image, x, y); }然而,採用高度、寬度或矩形的方法是不同的。這些方法要麼忽略高度和寬度,要麼只使用矩形的頂部和左側。
我的猜測是
DrawImageUnscaled Method (Image, Int32, Int32)由於奇偶校驗原因而存在,並且由於源設備和目標設備的 dpi 差異而與縮放無關。