[英]Why would you subtract 1 from the Width and Height properties of a Bitmap?
我有以下代碼:
public static double[][] GetRgbProjections(Bitmap bitmap)
{
var width = bitmap.Width - 1;
var height = bitmap.Height - 1;
var horizontalProjection = new double[width];
var verticalProjection = new double[height];
var bitmapData1 = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
有人知道bitmap.Width - 1
是做什么用的嗎? 也是bitmap.Height - 1;
? 為什么要從每個屬性值中減去1?
由返回的值Width
和Height
屬性是互斥的 ,這意味着與坐標(寬度,高度)中的像素立即位於所述位圖的邊界之外 。
因此,如果要遍歷像素,則需要減去一以獲得正確的行數或列數。
當然,很難說更多。 您顯示的代碼部分不再使用這些值。
不。我們永遠不會知道從位圖寬度減去1的目的是什么,因為我們不知道bitmap
的上下文。
這樣做的原因是使數組索引與位圖的行和高度值匹配。 考慮:
您有一個2x2像素的位圖。 它總共有4個像素,寬度和高度均為2。 如果要對其進行迭代,則需要在兩個方向(寬度和高度)上從0到1(包括兩端)進行迭代,但是如果按位圖像素進行迭代,則將在1和2之間進行迭代,這將導致索引從界限。
就我個人而言,我不會從width和height 變量中減去1,而只是在迭代像素數組以防止混淆時減去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.