热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在ToolStripItem上设置Region的等效项-HowtosettheequivalentofRegiononaToolStripItem

IsthereawayinWinformstochangetheshapeofaToolStripitem.Ifitwereapanel,Icouldset

Is there a way in Winforms to change the shape of a ToolStrip item. If it were a panel, I could set the Region to my GraphicPath object. But for ToolStripItem, I don't know how to do this, since it isn't derived from Control. alt text http://store.ezburn.com/images/productimages/toolstripbuttonshapes.jpg

Winforms中是否有一种方法可以更改ToolStrip项的形状。如果它是一个面板,我可以将Region设置为我的GraphicPath对象。但对于ToolStripItem,我不知道如何做到这一点,因为它不是从Control派生的。替代文字http://store.ezburn.com/images/productimages/toolstripbuttonshapes.jpg

2 个解决方案

#1


You need to create you own ToolStripRenderer, and paint buttons in your code. With such approach you can simulate any shape, and in general almost anything.

您需要创建自己的ToolStripRenderer,并在代码中绘制按钮。通过这种方法,您可以模拟任何形状,通常几乎任何形状。

Then after custom renderer is complete, you will need to assign your renderer to toolstrip and thats it.

然后在自定义渲染器完成后,您需要将渲染器分配给工具条,就是这样。

An article describing writing custom renderers.

一篇描述编写自定义渲染器的文章。

Update: You can also check this article, it can be useful for your task.

更新:您还可以查看这篇文章,它对您的任务非常有用。

#2


I guess this is possible, after seeing the second link in arbiter's post, but I will keep my solution. With time being short because of deadlines, I've changed the type of control to a plain button. Here I can set the region, and have been able to reproduce the required look by setting the region to what I call the chevron path. The top two buttons are derived from Windows.Forms.Button with custom paint and region set. The bottom two buttons are the toolstrip buttons with custom renderer and custom paint.

我想这是可能的,在看到仲裁员帖子中的第二个链接后,我会保留我的解决方案。由于截止日期时间很短,我已将控制类型更改为普通按钮。在这里,我可以设置区域,并且能够通过将区域设置为我称为V形路径的区域来重现所需的外观。前两个按钮派生自Windows.Forms.Button,带有自定义绘制和区域设置。底部的两个按钮是带有自定义渲染器和自定义绘制的工具条按钮。

alt text http://store.ezburn.com/images/productimages/toolstripbuttonshapes-final.jpg

替代文字http://store.ezburn.com/images/productimages/toolstripbuttonshapes-final.jpg

I don't know if this will be helpful to anyone. But here's the code I use to set the region:

我不知道这对任何人都有帮助。但这是我用来设置区域的代码:

    Private Sub setRegion()

        Dim r As Rectangle = ClientRectangle
        Me.Region = New Region(getChevronPath(r.X, r.Y, r.Width, r.Height))

    End Sub

 Private Function getChevronPath(ByVal X As Single, ByVal Y As Single, _
       ByVal width As Single, ByVal height As Single) As GraphicsPath

        Dim w As Integer = Convert.ToInt32(X + width - ChevronHeight)
        Dim hh As Integer = Convert.ToInt32(height / 2)

        Dim gp As New GraphicsPath()
        'top
        gp.AddLine(X, Y, w, Y)
        'arrowtop, on the right
        gp.AddLine(w, Y, w + ChevronHeight, hh)
        'arrowbottom, on the right
        gp.AddLine(w + ChevronHeight, hh, w, Y + height)
        'bottom
        gp.AddLine(w, Y + height, X, Y + height)

        If EndButton Then
            'left
            gp.AddLine(X, Y + height, X, Y)
        Else
            'arrowbottom, on the left
            gp.AddLine(X, Y + height, ChevronHeight, hh)
            'arrowtop on the left
            gp.AddLine(ChevronHeight, hh, X, Y)
        End If

        gp.CloseFigure()

        Return gp
    End Function

推荐阅读
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了GregorianCalendar类的基本信息,包括它是Calendar的子类,提供了世界上大多数国家使用的标准日历系统。默认情况下,它对应格里高利日历创立时的日期,但可以通过调用setGregorianChange()方法来更改起始日期。同时,文中还提到了GregorianCalendar类为每个日历字段使用的默认值。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
author-avatar
小赖小燕_380
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有