zoukankan      html  css  js  c++  java
  • 画在WinForms控制

    Form1 Form2 介绍 GraphicalOverlay组件利用某种形式的控制。它本质上是像铺设一块玻璃在玻璃上的形式和绘画。我使用这个组件来区分控制来帮助用户理解复杂的关系在UI中。我很少使用它,但有时候你只需要一个大红色箭头表示:这将影响!如果做得正确,结果可以很优雅。 使用的代码 使用GraphicalOverlay组件,遵循这些步骤: 以下两个文件复制到您的项目目录:GraphicalOverlay。cs, GraphicalOverlay.designer.cs。GraphicalOverlay.cs添加到您的项目。Visual Studio将自动包括GraphicalOverlay.designer.cs。 编译该项目。这将创建一个Visual Studio中的GraphicalOverlay组件工具箱。 GraphicalOverlay组件从工具箱拖放到表单的设计表面。该组件将自动graphicalOverlay1命名。油漆在表单中,创建一个事件处理程序graphicalOverlay1 (graphicalOverlay1_Paint())。在形式的构造函数,后InitializeComponents ();行,添加以下行: 隐藏,副本中Codepublic Form1 () { InitializeComponent (); graphicalOverlay1。老板=; } 在graphicalOverlay1_Paint()(见第5步),使用e。图形画任何你喜欢的,使用形式相关的坐标。 隐藏,复制Codeprivate空白graphicalOverlay1_Paint(对象发送方,PaintEventArgs e) { / /这个事件将火的形式,每个控制形式。 / /图形覆盖组件将已经改变了 / /图形对象使用表单的坐标系统, / /所以不需要控制特定的计算。 矩形矩形= this.ClientRectangle; rect.Inflate(-10、-10); 使用(钢笔笔=新钢笔(颜色。红色,5)) e.Graphics。DrawEllipse(笔,矩形); 使用新字体(字体字体=(“Arial 14)) e.Graphics。拉带(“现在是时候了。” 字体、画笔。绿色,110); […] } 画control-relative图形,使用坐标()方法来获取控件的形式相关的坐标。看到Form1.graphicalOverlay1_Paint()事件处理程序演示代码的一个例子。 隐藏,复制Codeprivate空白graphicalOverlay1_Paint(对象发送方,PaintEventArgs e) { […] / /画相对于控制,使用坐标方法。 使用(钢笔笔=新钢笔(颜色。蓝色、3)) e.Graphics。DrawEllipse(笔,pictureBox1.Coordinates ()); } 的兴趣点 组件包含事件处理程序如下: Form_Resize Control_Paint 当graphicalOverlay1。主人属性设置,组件连接Form_Resize事件处理程序所有者形式的调整大小事件。然后,组件高度对油漆的Control_Paint事件处理程序事件的每个主人表单的控制(包括业主表单)。 每个控件重新粉刷,组件处理油漆事件,将坐标转换的e。图形对象,然后触发自己的油漆事件将由表单的graphicalOverlay1_Paint事件处理程序处理。 因为e。图形对象收到graphicalOverlay1_Paint()已经改变了使用表单的坐标系统,所有的绘图逻辑是形式相关。画,如果你要画在形式的客户区。 这种方法相对于控制,很难画。简化control-relative画,我添加了一个扩展System.Windows.Forms称为坐标()的方法。控制类。坐标()方法将控制形式相关的位置坐标。使用坐标画(控制)而不是control.Location。 因为图形叠加可以对所有形式的控制,它要求整个表单作废重绘。调用组件的失效()方法将失效的形式,每个表单的控制。 限制 回应每个控件的油漆事件的组件。文本框控件不防火漆事件,所以组件不能画在文本框控件。可以从第三方使用文本框控件,但是我没有其中任何一个进行测试。 组件只能画在一个控制的客户区。一些控件包含一个边界,不属于他们的客户区,所以组件不能越过边境。一个解决这个问题的是关掉控制边界和画使用组件。 组件只能画在形式的客户区。它不能画在表单的标题栏或边界,并且不能画之间的形式。模拟图形式的边界,你需要关闭表单的边境,画与组件,重新实现所有的失去了功能。 演示 我演示包括两种形式来帮助你了解如何实现自己的掌握phicalOverlay1_Paint事件处理程序。 Form1.cs是红色和蓝色戒指的图片和绿色文本。 注意:在Form1演示运行时,调整几次。 Form2.cs演示了组框和单选按钮。 注意:为了之间切换Form1 Form2演示,您必须修改Program.cs文件中运行Form1或Form2。默认情况下,演示将Form2运行。 Form2演示,graphicalOverlay1_Paint中的代码()包含大量的硬编码的值。我可以计算这些值,但是它只会更难阅读代码。硬编码的值可能不完全正确工作如果你的UI文化不同于我的或者你的字体配置不同于我的。文章的开头截图将向您展示他们应该是什么样子的。 本文转载于:http://www.diyabc.com/frontweb/news11955.html

  • 相关阅读:
    ARP攻击原理与解决
    如何查看数据库各种表oracle
    MyEclipse 8.0注册码
    oracle数据库导入导出
    输出设备已满或不可用, 归档程序无法归档重做日志[oracle解决方法]
    句柄以及对象的比较java
    shutdown immediate 后无法启动实例问题解决
    马云经典语录
    海量数据处理分析_BI
    数据库迁移方案
  • 原文地址:https://www.cnblogs.com/Dincat/p/13473421.html
Copyright © 2011-2022 走看看