首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在.net winform中创建圆角容器

在.NET WinForm中创建圆角容器,可以通过自定义控件来实现。以下是一个简单的示例代码:

代码语言:csharp
复制
using System;
using System.Drawing;
using System.Windows.Forms;

public class RoundedContainer : Panel
{
    private int _cornerRadius = 10;

    public int CornerRadius
    {
        get { return _cornerRadius; }
        set { _cornerRadius = value; Invalidate(); }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);

        using (var graphicsPath = new System.Drawing.Drawing2D.GraphicsPath())
        {
            graphicsPath.AddArc(0, 0, CornerRadius, CornerRadius, 180, 90);
            graphicsPath.AddArc(Width - CornerRadius, 0, CornerRadius, CornerRadius, 270, 90);
            graphicsPath.AddArc(Width - CornerRadius, Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
            graphicsPath.AddArc(0, Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);

            Region = new Region(graphicsPath);
        }

        using (var pen = new Pen(Color.Gray, 2))
        {
            e.Graphics.DrawArc(pen, 0, 0, CornerRadius, CornerRadius, 180, 90);
            e.Graphics.DrawArc(pen, Width - CornerRadius, 0, CornerRadius, CornerRadius, 270, 90);
            e.Graphics.DrawArc(pen, Width - CornerRadius, Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
            e.Graphics.DrawArc(pen, 0, Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
        }
    }
}

这个控件继承自Panel,可以在设计器中直接拖放,并且可以设置CornerRadius属性来调整圆角的大小。在OnPaint方法中,我们使用System.Drawing.Drawing2D.GraphicsPath来绘制圆角矩形,并且使用Region属性来设置控件的形状。最后,我们使用Graphics.DrawArc方法来绘制边框。

这个控件可以直接在.NET WinForm项目中使用,无需引用其他库或者组件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • IoC容器Web容器创建及初始化

    在前面我们分析了IoC容器的基本实现,下面我们来看看在Web容器,Spring MVC是建立IoC容器基础上的.了解Spring MVC,首先要了解Spring IoC容器是如何在Web环境中被载入并起作用的...假如此时容器还未初始化,则调用createWebApplicationContext方法创建一个容器。...执行这个方法的时候,会将从ApplicationContext.xml配置文件获取到的内容配置到已经创建好了的XmlWebApplicationContext容器中去,并调用refresh方法来完成容器的初始化...因为initWebApplicationContext方法我们可以看到其实创建ApplicationContext容器的工作是交由createWebApplicationContext方法来实现的,...determineContextClass源码 完成IoC容器创建后,initWebApplicationContext

    1.2K70

    ASP.NET随意创建图形信息

    如果没有一个外部组件的支持,ASP是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点ASP.NET改变了。...用命令行程序创建图形   讨论一大堆ASP.NET代码之前,我们先执行一个简单的命令行程序做一个测试,然后使用这些源代码作为 ASP.NET 脚本的基础。...实际上,两者的区别在于:命令行程序将图形保存在一个文件,而ASP.NET 脚本将图形直接发送到客户端。   举例的程序做什么呢?...要创建一个位图时,用这个对象做什么呢?奥妙在于:这是可以向其中绘图的上下文环境。我们可以屏幕上、打印机上和内存中使用一个图形上下文环境,准确地说就是一个位图。...System.Drawing.DLL pagecounter.cs   Web服务器上创建ASP.NET程序   上面的代码作为一个命令行应用程序已经足够了,但是要编写相应的 ASP.NET 脚本

    1.2K20

    docker学习(5) mac创建mysql docker容器

    上有一个专门的docker-libary项目,里面有各种各样常用的docker镜像,可以做为学习的示例,今天研究下其中mysql镜像的用法,国内镜像daocloud.io也能找到mysql的镜像,但根据其参考文档mac...上尝试了数次,将mysql数据库文件存储mac本机时,启动总是报错,大意是docker容器运行时,容器的当前用户mysql,由于权限不足无法mac本机上创建文件,stackoverflow上有人解决了这个问题...build完成后,可用docker images ls确认下是否本机生成了名为yjmyzz/mysql-osx的镜像,接着就可以创建mysql容器了,示例如下: docker run -d -h mysql...123456 yjmyzz/mysql-osx 上面有几个参数值大家根据需要自行调整: -v 后面的/Users/yjmyzz/data/db/mysql 为mac本机的目录,用于存放mysql数据库文件(创建前要注意该目录必须为空...docker exec -it mysql sh 然后容器内 vi /etc/mysql/my.cnf 注意:修改完mysql参数后,如果直接在容器内 service mysql restart ,

    2.6K80

    Windows 11 处理 WindowChrome 的圆角

    Windows 11 的圆角 直角统治了微软的 UI 设计多年以后,微软突然把直角骂了一顿,说还是圆角好看,于是 Windows 11 随处都可看到圆角设计。...也就是说 Windows 11 上窗体需要应用半径为 8px 的圆角。 2....WPF 制作高性能的透明背景异形窗口(使用 WindowChrome 而不要使用 AllowsTransparency=True) 另外,关于圆角我要抱怨一下: Windows 11 ,我们对窗口边框进行了圆角处理...圆角处理的量也是精心选择的。 我们公司对此进行了研究,努力专业性、柔和感和吸引度之间取得平衡。...参考 Windows 11 的桌面应用应用圆角 Windows 11 上,为增强应用功能而可以执行的最常见的 11 种操作 Windows 11 的几何图形 6.

    3K10

    .NET 创建对象的几种方式的对比

    .net 创建一个对象最简单的方法是直接使用 new (), 实际的项目中,我们可能还会用到反射的方法来创建对象,如果你看过 Microsoft.Extensions.DependencyInjection...的源码,你会发现,为了保证不同场景的兼容性和性能,内部使用了多种反射机制。...使用 Activator.CreateInstance 如果你需要创建对象的话,.NET Framework 和 .NET Core 中正好有一个专门为此设计的静态类,System.Activator...NET Core 很熟悉的 IOC 容器,Microsoft.Extensions.DependencyInjection,把类型注册到容器后,然后我们使用 IServiceProvider 来获取对象...这里简单对比了几种创建对象的方法,测试的结果也可能不是特别准确,有兴趣的还可以 .net framework 上面进行测试,希望对您有用!

    2.2K30

    C#代码示例:WinForm创建并绑定一个DataTable

    我的一篇文章,我解释了如何在没有数据库的情况下以web形式绑定gridview。这里,我将解释如何在没有数据库的windows窗体绑定datagrid。...1、创建一个数据表。 2、通过需要数据类型来创建列名column或标题。 3、将此列column添加到datatable 4、创建一个包含输入控件所有值的行。...这样,我们就可以windows窗体应用程序绑定一个没有数据库的datagrid。 对于维护这个datagrid的状态,现在用户面临的问题是什么。...将行绑定到datagrid时,输入一个条件。首先,检查该数据表是否有数据。如果没有数据,则绑定datagrid的列标头,否则只绑定没有datacolumn标头的行。...因此,通过这种方式,我们就可以windows应用程序维护datatable状态。

    3.5K40

    【Docker】Asp.net coredocker容器的端口问题

    还记得【One by one系列】一步步学习docker(三)——实战部署dotnetcore遇到的问题么?容器内部启动始终是80端口,并不由命令左右。...指定版本的运行时压缩包 验证压缩包正确性 解压压缩文件 删除压缩文件 ” 2.2 .Net Core Runtime 根据上面的Dokcerfile,可以看到asp.net core的镜像是.net...Core Runtime Dependencies 根据上面的Dokcerfile,可以看到.net core的镜像是runtime-deps的基础上构建的,所以继续找到runtime-deps的构建镜像的...in a container DOTNET_RUNNING_IN_CONTAINER=true 3.真相浮出水面 ENV ASPNETCORE_URLS=http://+:80 \ 没错正是基础镜像...Docker容器的最佳实践是一个容器只运行一个进程,意味着一个容器就暴露一个端口,所以去修改默认端口没有很大的必要性。这里对其问题溯源只是作为一个了解.

    2.3K20

    ServiceFabric: Windows上创建容器应用并部署到ServiceFabric

    运行如下命令build这个应用 ng build --prod 可以看到有一个dist文件夹,这里就是编译好的静态代码,然后dist\FrontendDemo文件夹创建一个Dockerfile ?...的后端,打包成镜像,推送到镜像仓库 使用Visual Studio创建一个.net framework webApi,这个应用程序采用http.sys作为web 服务器,所以它必须寄宿IIS下才能运行...,目的是我们希望能把传统的.net应用程序放到service fabric之中,当然你也可以创建.net core,不过那样就可以使用linux docker container了。...直接访问83端口,如下图,因为这是asp.net web api,它和mvc集成了,所以我创建此后端应用程序的时候,它顺便把页面也写了,看下面第二张图,就是调用API的效果,这个链接可以Azure cluster...至于后端,web.config把如下代码加进去解决跨域的问题 <!

    1.3K40

    Coding.net创建项目开发

    先在Coding上创建个项目 1.首先需要给项目Project创建个版本库(仓库) 这样Project里每个文件的修改,删除等操作,git才能追踪管理。...2.把文件放到git仓库 用git status命令看仓库的的状态 可以看到第一步只是创建了一个仓库而已,我们还需要把这些未追踪的文件放到仓库里。需要两步 (1)git add ....(把文件放到仓库) 3.把本地仓库与Coding上的仓库关联 用git remote add origin地址关联 4.把本地库的所有内容推送到Coding远程库上(每次修改后就提交,提交之后记得push...用git commit 命令 注意:我这里使用的是Tortoisegit客户端,然后安装提示操作即可, 然后查看界面,结构是这样的就表示成功了

    1.3K60

    ASP.NET Core创建基于Quartz.NET托管服务轻松实现作业调度

    在这篇文章,我将介绍如何使用ASP.NET Core托管服务运行Quartz.NET作业。这样的好处是我们可以应用程序启动和停止时很方便的来控制我们的Job的运行状态。...本文中,我将介绍创建Quartz.NET作业的基本知识并将其调度为托管服务的计时器上运行。...相反,我们可以提供一个自定义的IJobFactory挂钩到ASP.NET Core依赖项注入容器(IServiceProvider): using Microsoft.Extensions.DependencyInjection...在这个方法工厂必须返回Quartz调度程序所请求的IJob。在此实现,我们直接委托给IServiceProvider,并让DI容器找到所需的实例。...作业中使用作用域服务 这篇文章描述的实现存在一个大问题:您只能创建Singleton或Transient作业。这意味着您不能使用注册为作用域服务的任何依赖项。

    2.9K20

    .NET 6 如何创建和使用 HTTP 客户端 SDK

    在这篇文章,我将分享.NET 6 创建和使用 HTTP 客户端 SDK 的方方面面。 客户端 SDK 远程服务之上提供了一个有意义的抽象层。本质上,它允许进行远程过程调用(RPC)。...一台机器上同时打开的并发 TCP 连接数量是有限的。这种考虑也带来了一个重要的问题——“我应该在每次需要时创建 HttpClient,还是只应用程序启动时创建一次?”...2 消费 API 客户端 我们的例子,消费 API 的一个基本场景是无依赖注入容器的控制台应用程序。这里的目标是让消费者以最快的方式来访问已有的 API。...提供一个自定义的扩展方法用于 DI 添加类型化的 HttpClient。...弹性模式——重试、缓存、回退等:很多时候,一个系统不可靠的世界里,你需要通过加入一些弹性策略来确保高可用性。幸运的是,我们有一个内置的解决方案,可以.NET 构建和定义策略,那就是 Polly。

    12.6K20

    Unity容器asp.net mvc的IOC应用及AOP应用

    《asp.net-mvc框架揭秘》一书中,有个示例,是使用unity容器来注入自定义的控制器工厂。代码示例可以自己去下载源码,在这里我就不说了。...IOC容器的本质是解耦的实例化接口类,而如何做到解耦就是通过第三方容器来实例化,在这里是unity容器,而不是项目中实例化接口类。实例化的方法无非就是反射,Emit,表达式树,委托等四个方法。...Unity容器的IOC使用主要是三个个方法:Register,Resolver,Dispose。前者注册接口和接口类,后者将接口类的实例化转移到第三方容器实现。而这里的Dispose却是有点文章了。...如果单单是控制台的应用项目,就不必多说,如果是mvc框架的话,我们的接口类的资源释放应该放在什么地方合适呢?...asp.net-mvc框架的过滤器就是基于attribute实现的。

    18910

    【DB宝26】Oracle 19c创建容器数据库(3)--手动创建CDB

    •第三步是使用CREATE DATABASE命令和新子句ENABLE PLUGGABLE DATABASE指定数据库为容器数据库而不是非CDB,从而创建CDB。...此操作会在装载阶段创建容器及控制文件,并在打开阶段创建重做日志文件和根数据文件。根数据文件用于SYSTEM表空间(其中包括Oracle提供的元数据和数据字典)以及针对AWR的SYSAUX表空间。...•第四步是通过执行连接到根容器的catcdb.sql脚本创建目录和其他组件。 麦老师不建议手工建库,因为很多组件不全,而且创建过程非常麻烦。...本例,/oracle/dbs和/oracle/seed目录必须存在。...手工建库只是特殊场景才会用到。 本文结束。

    3.8K20
    领券