圖片局部放大選中部分錯位解決辦法

情景以下:
          在窗體上添加一個Picturebox用來加載圖片,當鼠標在Picturebox移動時圈定一個矩形區域,並將矩形區域放大顯示在Panel控件上。
問題:
            已PictureBox做爲座標參考系,動態得到跟隨鼠標的矩形框起始座標,掃描此矩形框內圖片像素時,得到的像素信息與視覺看到的信息發生錯位

問題緣由:
          鼠標座標參照PicBox,可是像素座標參照圖片自己,由於圖片長寬與picBox不能徹底對應,設置的時候將圖片居中顯示,因此實際上圖片是超出了控件的範圍的。這時加入鼠標取到的座標是(x,y),那麼像素座標是(x1,y1),其其中x1>=x,y1>=y。這時將像素座標以(x,y)進行處理,因此出現錯位
c#

解決辦法是: spa

           對圖片座標與控件座標進行轉換,將控件座標轉換爲圖片座標便可。 code

轉換代碼演示:
orm

/************************************************************************/
        /* 控件座標與圖像座標轉換                                                                     */
        /************************************************************************/
        private Point CoordinationTransformation(Point p){
            int l = (bitmap.Width - pictureBox1.Width) / 2;
            int h = (bitmap.Height - pictureBox1.Height) / 2;
            p = new Point(p.X+l,p.Y+h);
            return p;
        }
相關文章
相關標籤/搜索