狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C#與halcon聯合編程之窗體內圖像常見操作

admin
2023年2月27日 11:44 本文熱度 1252

目錄:

讀取圖片

拉伸顯示

不拉伸,原圖比例顯示

圖像縮放

圖像移動,實時移動

圖像自適應


讀取圖片:

//獲取文件路徑下的圖片        public HObject GetImgfromPath(string imgPath)        {            HObject L_Img;            HOperatorSet.GenEmptyObj(out L_Img);//清空圖片            L_Img.Dispose();//釋放            HOperatorSet.ReadImage(out L_Img, imgPath);//讀取圖片存入到l_img            return L_Img;        }

拉伸顯示

//圖片拉伸顯示        public void  ImgIsStretchDisplay(HObject L_Img, HTuple Hwindow)        {            HTuple hv_Width,hv_Height;            HOperatorSet.ClearWindow(Hwindow);//清空畫面            HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//獲取圖片大小規格            HOperatorSet.SetPart(Hwindow, 0, 0, hv_Height, hv_Width);//設置窗體的規格            HOperatorSet.DispObj(L_Img, Hwindow);//顯示圖片
}

不拉伸,原圖比例顯示

//圖片不拉伸顯示        public void ImgIsNotStretchDisplay(HObject L_Img, HTuple Hwindow)        {            HTuple hv_Width, hv_Height;            HTuple win_Width, win_Height, win_Col, win_Row, cwin_Width, cwin_Height;            HOperatorSet.ClearWindow(Hwindow);            HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//獲取圖片大小規格            HOperatorSet.GetWindowExtents(Hwindow, out win_Row, out win_Col, out win_Width, out win_Height);//獲取窗體大小規格            cwin_Height = 1.0 * win_Height / win_Width * hv_Width;//寬不變計算高                      if (cwin_Height > hv_Height)//寬不變高能容納            {                cwin_Height = 1.0 * (cwin_Height - hv_Height) / 2;                HOperatorSet.SetPart(Hwindow, -cwin_Height, 0, cwin_Height + hv_Height, hv_Width);//設置窗體的規格            }            else//高不變寬能容納            {                cwin_Width = 1.0 * win_Width / win_Height * hv_Height;//高不變計算寬                cwin_Width = 1.0 * (cwin_Width - hv_Width) / 2;                HOperatorSet.SetPart(Hwindow, 0, -cwin_Width, hv_Height, cwin_Width + hv_Width);//設置窗體的規格            }            HOperatorSet.DispObj(L_Img, Hwindow);//顯示圖片        }

圖像縮放

//圖片縮小放大,配合鼠標滾輪事件 public void ImgZoom(HObject L_Img, HTuple Hwindow, int Delta = 0) { HTuple Zoom, Row, Col, L_Button; HTuple hv_Width, hv_Height; HTuple Row0, Column0, Row00, Column00, Ht, Wt; HTuple[] Now_Pos = new HTuple[4]; if (Delta > 0)//鼠標滾動格值,一般120 { Zoom = 1.2;//向上滾動,放大倍數 } else { Zoom = 0.8;//向下滾動,縮小倍數 } HOperatorSet.GetMposition(Hwindow, out Row, out Col, out L_Button);//獲取當前鼠標的位置 HOperatorSet.GetPart(Hwindow, out Row0, out Column0, out Row00, out Column00);//獲取當前窗體的大小規格 HOperatorSet.GetImageSize(L_Img, out hv_Width, out hv_Height);//獲取圖片大小規格 Ht = Row00 - Row0; Wt = Column00 - Column0; if (Ht * Wt < 32000 * 32000 || Zoom == 1.2) { Now_Pos[0] = (Row0 + ((1 - (1.0 / Zoom)) * (Row - Row0))); Now_Pos[1] = (Column0 + ((1 - (1.0 / Zoom)) * (Col - Column0))); Now_Pos[2] = Now_Pos[0] + (Ht / Zoom); Now_Pos[3] = Now_Pos[1] + (Wt / Zoom); HOperatorSet.SetPart(Hwindow, Now_Pos[0], Now_Pos[1], Now_Pos[2], Now_Pos[3]); HOperatorSet.ClearWindow(Hwindow); HOperatorSet.DispObj(L_Img, Hwindow); } else { ImgIsNotStretchDisplay(L_Img, Hwindow);//不拉伸顯示 }
}


圖像移動,實時移動:


HTuple oldRow, oldColumn;
//鼠標按下去拖著圖像移動,配合鼠標坐標按下與移動事件 public void MouseDownMoveImg(HObject L_Img, HTuple Hwindow) { HTuple row1, col1, row2, col2, Row, Column, Button; HOperatorSet.GetMposition(Hwindow, out Row, out Column, out Button); double RowMove = Row - oldRow; double ColMove = Column - oldColumn; HOperatorSet.GetPart(Hwindow, out row1, out col1, out row2, out col2);//得到當前的窗口坐標 HOperatorSet.SetPart(Hwindow, row1 - RowMove, col1 - ColMove, row2 - RowMove, col2 - ColMove);
//防止刷新圖片太快的時候閃爍 HOperatorSet.SetSystem("flush_graphic", "false"); HOperatorSet.ClearWindow(Hwindow); HOperatorSet.SetSystem("flush_graphic", "true"); //
HOperatorSet.DispObj(L_Img, Hwindow); }
public void SaveMouseDownPosition(HTuple Hwindow) { HTuple Button;            HOperatorSet.GetMposition(Hwindow, out oldRow, out oldColumn, out Button);        }

圖像自適應

//設置自動適應        private void tsMAutoFit_Click(object sender, EventArgs e)        {            try            {                ImgIsNotStretchDisplay(ho_Image1, hWindowControl1.HalconWindow);            }            catch (Exception)            {                MessageBox.Show("自適應失敗,請插入圖像!");            }                  }

該文章在 2023/2/27 11:44:40 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved