OK,今天的教程咱們須要作的是在圖片框中顯示一張圖片,而後咱們點擊圖片上任意位置,計算出在該圖片實際點擊爲的位置。c#
如我選擇720 * 1280的圖片,而圖片框的大小爲 360 *640,那麼要怎樣計算出位置呢。code
OK,那麼開始.orm
首先須要添加一個圖片框,以後咱們須要給該圖片框添加一個鼠標,該鼠標事件是爲了對點擊位置進行處理。教程
首先須要作的是將圖片顯示到圖片框中,因爲須要釋放資源,這裏不直接顯示,而是經過IO接口實現,異常直接使用Exception
接口
int imageWidth = 0; int imgaeHeight = 0; String imageFilePath = ""; System.IO.FileStream fs = null; try { fs = new System.IO.FileStream(imageFilePath , System.IO.FileMode.Open, System.IO.FileAccess.Read); mPictureBox.Image = System.Drawing.Image.FromStream(fs); } catch (Exception e) { if (fs != null) fs.Close(); }
顯示圖片成功以後,咱們須要獲取照片的寬度和高度,也就是像素大小事件
if(PictureBox.Image!=null){ imageWidth = mPictureBox.Image.Width; imageHeight = mPictureBox.Image.Height; }
private void ImageOnClickListener(object sender,MouseEventArgs e) { //爲了防止圖片框大小該表,先獲取圖片框的大小 int defWidth = mPictureBox.Width; int defHeight = mPictureBox.Height; //獲取以後 咱們須要獲取鼠標點擊在圖片框的位置 也就是X 和 Y int _x = e.X; int _y = e.Y; //那麼都獲取以後就須要開始計算了 先計算倍數 double widthMultiple = 0; double heightMultiple = 0; if (imageWidth > defWidth) widthMultiple = imageWidth / defWidth; else widthMultiple = defWidth / defWidth - 1; if (imgaeHeight > defHeight) heightMultiple = imgaeHeight / defHeight; else heightMultiple = defHeight / imgaeHeight - 1; //最後相成 MessageBox.Show("X:" + (_x * widthMultiple) + " >> Y:" + (_y * heightMultiple), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }通常爲了穩定,都將圖片框的大小固定.小夥伴們能夠試下哈~~~