首页 > 其他分享 >winform 登录

winform 登录

时间:2023-01-01 16:22:06浏览次数:46  
标签:hRgn 圆角 登录 int rgnRadius static public winform

   最近一直在搞winform,对于我一个经常搞B/S的开发者来说,还是学一下的。不得不说这个winform的原始控件时真的丑,对于我一个用惯了前端框架的人来说时真的难受。我拖拽了一个登录页面,简直不忍直视。

 

  这样搞出来的桌面程序,人家看了直接扔到垃圾箱里。只能自己润色一下了。本人没有什么艺术细胞,只能搜一下网上的登录图片了,这不第一就很nice了。

 

 把图放大一下看一看:

 

 那按照这个做一个,不能说全部一摸一样,起码要差不多。网上搜一个背景图片,下载一下:

 

白色背景还有一个图片,到阿里云图标库下一个矢量图就行了,这个就不错。

 

剩下来就是山寨一个登陆页面了。

 首先给window窗体去掉边框,然后把背景颜色添加进去

 

 把这个窗体做成稍微圆角的,那封装一个圆角设置的方法:

   /// <summary>
    /// winform panel、label、button等控件,设置圆角
    /// 注意:一定要去除组件的边框
    /// </summary>
    public class RoundControl
    {
        /// <summary>
        /// From圆角设置
        /// </summary>
        /// <param name="form"></param>
        /// <param name="rgnRadius"></param>
        public static void SetFormRoundRectRgn(Form form, int rgnRadius)
        {
            int hRgn = 0;
            hRgn = CreateRoundRectRgn(0, 0, form.Width, form.Height, rgnRadius, rgnRadius);
            SetWindowRgn(form.Handle, hRgn, true);
            DeleteObject(hRgn);
        }
       /// <summary>
       /// Panel圆角设置
       /// </summary>
       /// <param name="panel"></param>
       /// <param name="rgnRadius"></param>
        public static void SetPanelRoundRectRgn(Panel panel, int rgnRadius)
        {
            int hRgn = 0;
            hRgn = CreateRoundRectRgn(0, 0, panel.Width, panel.Height, rgnRadius, rgnRadius);
            SetWindowRgn(panel.Handle, hRgn, true);
            DeleteObject(hRgn);
        }
        /// <summary>
        /// Label圆角设置
        /// </summary>
        /// <param name="label"></param>
        /// <param name="rgnRadius"></param>
        public static void SetLabelRoundRectRgn(Label label, int rgnRadius)
        {
            int hRgn = 0;
            hRgn = CreateRoundRectRgn(0, 0, label.Width, label.Height, rgnRadius, rgnRadius);
            SetWindowRgn(label.Handle, hRgn, true);
            DeleteObject(hRgn);
        }
        /// <summary>
        /// Button圆角设置
        /// </summary>
        /// <param name="button"></param>
        /// <param name="rgnRadius"></param>
        public static void SetButtonRoundRectRgn(Button button, int rgnRadius)
        {
            int hRgn = 0;
            hRgn = CreateRoundRectRgn(0, 0, button.Width, button.Height, rgnRadius, rgnRadius);
            SetWindowRgn(button.Handle, hRgn, true);
            DeleteObject(hRgn);
        }
        #region Public extern methods

        [DllImport("gdi32.dll")]
        public static extern int CreateRoundRectRgn(int x1, int y1, int x2, int y2, int x3, int y3);

        [DllImport("user32.dll")]
        public static extern int SetWindowRgn(IntPtr hwnd, int hRgn, Boolean bRedraw);

        [DllImport("gdi32.dll", EntryPoint = "DeleteObject", CharSet = CharSet.Ansi)]
        public static extern int DeleteObject(int hObject);

        [DllImport("user32.dll")]
        public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();
        #endregion

    }

  设置圆角幅度:

   RoundControl.SetFormRoundRectRgn(this, 15);

  查看效果

 

剩下的就是白色背景部分了,搞一个panel,然后背景设置成白色,变成圆角:

RoundControl.SetPanelRoundRectRgn(panel1, 15);

  看一下效果:

 

 把图标放上去,用户名和密码的图标从阿里云图标库上自己找一下就行了:

 

 这样看上去效果就出来了呀。

好像还有一个名字,白色区域时放不上去了,那就放在上面吧!:

 

 效果出来了,虽然和原图有点不一样,但是我们只是整体借鉴,总不能原模原样照搬吧。总体看上去效果应该比开始档次高多了吧。

  也是刚开始学,如果不好多多见谅。哈哈哈哈。。。

 

标签:hRgn,圆角,登录,int,rgnRadius,static,public,winform
From: https://www.cnblogs.com/zpy1993-09/p/17018223.html

相关文章

  • 配置 mysql 与注册登录模块
    今天的笔记开始记录后端。大二的时候MySQL没清理干净,对MySQL有阴影了。希望这次可以顺利SpringBoot的角色是用来处理用户请求数据存到Mysql里面,Mysql本质上就是算法题里......
  • Mysql - 查看数据库版本,登录,show语句,use 选择数据库
    1.查看数据库版本#登录之前CMD命令查看mysql--version#登录之后mysql语句查看SELECTVERSION();2.登录mysql-u用户名-hIP地址-P端口-p密码mysql-......
  • sso单点登录系统架构
    sso单点登录系统架构一、单点登录系统单点登录(sso系统)主要用于解决公司内多个系统间的用户登录问题。在一个多系统共存的环境下,实现用户在一个系统登录后,访问其他系统......
  • shiro单点登录和单次登录
    什么是单点登录,什么是单次登录单点登录,集群环境中,在一台服务器登录了,相当于整个集群环境都登录了,可以分成有状态和无状态两种方式单次登录,既一个账号只能登录一次,......
  • #yyds干货盘点#【愚公系列】2022年12月 微信小程序-小程序登录面板功能实现
    前言一、小程序登录面板功能实现1.主页面<buttonbindtap="showLoginPanel"type="primary">手动打开登录面板</button><LoginPanelshow="{{showLoginPanel}}"></Login......
  • C# WinForm国际化实现的简单方法
    本文是完善:https://www.jb51.net/article/45675.htm文章描述很详细,重要的代码都贴出来了我帮大家懒到家,将窗口代码和资源文件也传上来到手可运行,直观的了解多......
  • mysql的登录注册和连接他人数据库以及卸载
    mysql的登录参数:mysql-u用户名-p密码mysql的登录参数2:mysql-u用户名-p ,然后会提示你输入密码mysql的登录参数加连接他人数据库::mysql-u用户名-p密码-h要连接my......
  • Linux设置密钥登录
    使用密钥登录分为以下步骤:1、生成密钥(公钥与私钥)2、放置公钥(PublicKey)到服务器指定用户目录的.ssh/authorized_key文件中;3、配置SSH客户端使用密钥登录。4、测试密......
  • Python ssh远程登录设备执行命令
    #-*-encoding:utf-8-*-"""@Time:2022/12/3010:10@Auth:ruqing@File:ssh_sonic.py@IDE:PyCharm@Motto:ABC(AlwaysBeCoding)"""importsys,loggingimporto......
  • WordPress添加支付宝第三方登录功能
    OpenSocial操作简单适用范围广;可操作性强;无第三方平台、无接口文件冗余;功能特点社交登陆:腾讯QQ、微博、微信、豆瓣、谷歌、微软、Facebook、Twitter、Github等社交分享:QQ......