当前位置:网站首页>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
边栏推荐
- 赠书 | 《认知控制》:我们的大脑如何完成任务?
- MHA high availability coordination and failover
- kubernetes的Controller之deployment
- Use abp Zero builds a third-party login module (I): Principles
- 备战数学建模31-数据插值与曲线拟合3
- 年薪50万是一条线,年薪100万又是一条线…...
- Atcoder bit operation & Conclusion + formula derivation
- This is the graceful file system mounting method, which is effective through personal testing
- Sectigo的IP证书申请流程
- 程序分析与优化 - 8 寄存器分配
猜你喜欢

Common operation and Principle Exploration of stream

印尼投资部长:鸿海考虑在其新首都建立电动公交系统、城市物联网

View触摸分析

赠书 | 《认知控制》:我们的大脑如何完成任务?

One copy ten, CVPR oral was accused of plagiarizing a lot, and it was exposed on the last day of the conference!

关于 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error 解决方案(已解决)

TS common data types summary

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

【使用yarn运行报错】The engine “node“ is incompatible with this module.

【云原生】 ”人人皆可“ 编程的无代码 iVX 编辑器
随机推荐
Notes on writing questions in C language -- table tennis competition
Transformers datacollatorwithpadding class
在云服务器中云磁盘如何挂载
Two dimensional DFS
ArcGIS batch export layer script
印尼投资部长:鸿海考虑在其新首都建立电动公交系统、城市物联网
Electron
备战数学建模30-回归分析2
Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
Excel-VBA 快速上手(二、条件判断和循环)
Oracle ASMM and AMM
Attention meets geometry: geometry guided spatiotemporal attention consistency self supervised monocular depth estimation
Sectigo的IP证书申请流程
这才是优美的文件系统挂载方式,亲测有效
The heavyweight white paper was released. Huawei continues to lead the new model of smart park construction in the future
MySQL master-slave replication and read-write separation
Oracle ASMM和AMM
How to mount cloud disks in ECS
R语言使用epiDisplay包的aggregate函数将数值变量基于因子变量拆分为不同的子集,计算每个子集的汇总统计信息、使用aggregate.data.frame函数计算分组汇总统计信息
Understand the difference and use between jsonarray and jsonobject
