当前位置:网站首页>Halcon C # sets the form font and adaptively displays pictures
Halcon C # sets the form font and adaptively displays pictures
2022-06-26 14:59:00 【Tingyi - flying bird】
Set form font
// Use
Form1.set_display_font(this.hWindowControl1, 24, "mono", "true", "false");
public static void set_display_font(HalconDotNet.HWindowControl hWindowCtl, HTuple hv_Size, HTuple hv_Font,
HTuple hv_Bold, HTuple hv_Slant)
{
HTuple hv_OS = null, hv_Fonts = new HTuple();
HTuple hv_Style = null, hv_Exception = new HTuple(), hv_AvailableFonts = null;
HTuple hv_Fdx = null, hv_Indices = new HTuple();
HTuple hv_Font_COPY_INP_TMP = hv_Font.Clone();
HTuple hv_Size_COPY_INP_TMP = hv_Size.Clone();
HOperatorSet.GetSystem("operating_system", out hv_OS);
// dev_get_preferences(...); only in hdevelop
// dev_set_preferences(...); only in hdevelop
if ((int)((new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(new HTuple()))).TupleOr(
new HTuple(hv_Size_COPY_INP_TMP.TupleEqual(-1)))) != 0)
{
hv_Size_COPY_INP_TMP = 16;
}
if ((int)(new HTuple(((hv_OS.TupleSubstr(0, 2))).TupleEqual("Win"))) != 0)
{
//Restore previous behaviour
hv_Size_COPY_INP_TMP = ((1.13677 * hv_Size_COPY_INP_TMP)).TupleInt();
}
else
{
hv_Size_COPY_INP_TMP = hv_Size_COPY_INP_TMP.TupleInt();
}
if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("Courier"))) != 0)
{
hv_Fonts = new HTuple();
hv_Fonts[0] = "Courier";
hv_Fonts[1] = "Courier 10 Pitch";
hv_Fonts[2] = "Courier New";
hv_Fonts[3] = "CourierNew";
hv_Fonts[4] = "Liberation Mono";
}
else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("mono"))) != 0)
{
hv_Fonts = new HTuple();
hv_Fonts[0] = "Consolas";
hv_Fonts[1] = "Menlo";
hv_Fonts[2] = "Courier";
hv_Fonts[3] = "Courier 10 Pitch";
hv_Fonts[4] = "FreeMono";
hv_Fonts[5] = "Liberation Mono";
}
else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("sans"))) != 0)
{
hv_Fonts = new HTuple();
hv_Fonts[0] = "Luxi Sans";
hv_Fonts[1] = "DejaVu Sans";
hv_Fonts[2] = "FreeSans";
hv_Fonts[3] = "Arial";
hv_Fonts[4] = "Liberation Sans";
}
else if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual("serif"))) != 0)
{
hv_Fonts = new HTuple();
hv_Fonts[0] = "Times New Roman";
hv_Fonts[1] = "Luxi Serif";
hv_Fonts[2] = "DejaVu Serif";
hv_Fonts[3] = "FreeSerif";
hv_Fonts[4] = "Utopia";
hv_Fonts[5] = "Liberation Serif";
}
else
{
hv_Fonts = hv_Font_COPY_INP_TMP.Clone();
}
hv_Style = "";
if ((int)(new HTuple(hv_Bold.TupleEqual("true"))) != 0)
{
hv_Style = hv_Style + "Bold";
}
else if ((int)(new HTuple(hv_Bold.TupleNotEqual("false"))) != 0)
{
hv_Exception = "Wrong value of control parameter Bold";
throw new HalconException(hv_Exception);
}
if ((int)(new HTuple(hv_Slant.TupleEqual("true"))) != 0)
{
hv_Style = hv_Style + "Italic";
}
else if ((int)(new HTuple(hv_Slant.TupleNotEqual("false"))) != 0)
{
hv_Exception = "Wrong value of control parameter Slant";
throw new HalconException(hv_Exception);
}
if ((int)(new HTuple(hv_Style.TupleEqual(""))) != 0)
{
hv_Style = "Normal";
}
hv_AvailableFonts = hWindowCtl.HalconWindow.QueryFont();
//HOperatorSet.QueryFont(hv_WindowHandle, out hv_AvailableFonts);
hv_Font_COPY_INP_TMP = "";
for (hv_Fdx = 0; (int)hv_Fdx <= (int)((new HTuple(hv_Fonts.TupleLength())) - 1); hv_Fdx = (int)hv_Fdx + 1)
{
hv_Indices = hv_AvailableFonts.TupleFind(hv_Fonts.TupleSelect(hv_Fdx));
if ((int)(new HTuple((new HTuple(hv_Indices.TupleLength())).TupleGreater(0))) != 0)
{
if ((int)(new HTuple(((hv_Indices.TupleSelect(0))).TupleGreaterEqual(0))) != 0)
{
hv_Font_COPY_INP_TMP = hv_Fonts.TupleSelect(hv_Fdx);
break;
}
}
}
if ((int)(new HTuple(hv_Font_COPY_INP_TMP.TupleEqual(""))) != 0)
{
throw new HalconException("Wrong value of control parameter Font");
}
hv_Font_COPY_INP_TMP = (((hv_Font_COPY_INP_TMP + "-") + hv_Style) + "-") + hv_Size_COPY_INP_TMP;
hWindowCtl.HalconWindow.SetFont(hv_Font_COPY_INP_TMP);
return;
}
Adaptive display picture
// Use display
Form1.DisplayImage(this.hWindowControl1, imgSub);
// display picture
private static void DisplayImage(HalconDotNet.HWindowControl hWindowCtl, HImage imgShow)
{
// Set the display size
imgShow.GetImageSize(out int imgWidth, out int imgHeight);
double ratioWidth = (1.0) * imgWidth / hWindowCtl.Width;
double ratioHeight = (1.0) * imgHeight / hWindowCtl.Height;
HTuple row1, column1, row2, column2;
if (ratioWidth >= ratioHeight)
{
row1 = -(1.0) * ((hWindowCtl.Height * ratioWidth) - imgHeight) / 2;
column1 = 0;
row2 = row1 + hWindowCtl.Height * ratioWidth;
column2 = column1 + hWindowCtl.Width * ratioWidth;
}
else
{
row1 = 0;
column1 = -(1.0) * ((hWindowCtl.Width * ratioHeight) - imgWidth) / 2;
row2 = row1 + hWindowCtl.Height * ratioHeight;
column2 = column1 + hWindowCtl.Width * ratioHeight;
}
// display picture
hWindowCtl.HalconWindow.SetPart(row1, column1, row2, column2);
hWindowCtl.HalconWindow.DispObj(imgShow);
}
Be careful dll Need to be placed in a folder
halcon.dll
hcanvas.dll
halcondotnet.dll
边栏推荐
- Excerpt from three body
- Complimentary Book Cognitive Control: how does our brain accomplish tasks?
- Attention meets geometry: geometry guided spatiotemporal attention consistency self supervised monocular depth estimation
- Numpy basic use
- Stream常用操作以及原理探索
- Notes on writing questions in C language -- table tennis competition
- Electron
- Use abp Zero builds a third-party login module (II): server development
- 信息学奥赛一本通 1400:统计单词数 (字符串匹配)
- 网上找客户经理办理股票开户安全吗??
猜你喜欢

使用 Abp.Zero 搭建第三方登录模块(二):服务端开发

Question bank and answers of the latest Guizhou construction eight (Mechanics) simulated examination in 2022

Use abp Zero builds a third-party login module (I): Principles

备战数学建模31-数据插值与曲线拟合3

teamviewer显示设备数量上限解决方法

程序分析与优化 - 8 寄存器分配

Minister of investment of Indonesia: Hon Hai is considering establishing electric bus system and urban Internet of things in its new capital

这才是优美的文件系统挂载方式,亲测有效

Unity uses skybox panoramic shader to make panorama preview. There is a gap. Solution

文献1
随机推荐
网上股票开户安不安全?谁给回答一下
View touch analysis
A remove the underline from the label
VMware partial settings
nvidia-smi 报错
权威发布 | 延安大学2022年教师岗位招聘公告
IP certificate application process of sectigo
Sectigo的IP证书申请流程
Error when redis is started: could not create server TCP listening socket *: 6379: bind: address already in use - solution
备战数学建模32-相关性分析2
备战数学建模30-回归分析2
TS common data types summary
It's natural for the landlord to take the rent to repay the mortgage
重磅白皮书发布,华为持续引领未来智慧园区建设新模式
Complimentary Book Cognitive Control: how does our brain accomplish tasks?
R语言dplyr包intersect函数获取在两个dataframe中都存在的数据行、获取两个dataframe交叉的数据行
R语言caTools包进行数据划分、scale函数进行数据缩放、class包的knn函数构建K近邻分类器
The JVM outputs GC logs, causing the JVM to get stuck. I am stupid
BM3D in popular language
Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
