首页 > 其他分享 >SunnyUI的Button支持换行

SunnyUI的Button支持换行

时间:2023-04-25 17:37:03浏览次数:32  
标签:SunnyUI 换行 Button Height padding Width str sf size

最近在使用SunnyUI的控件写东西,遇到非常难受的问题,Button不支持换行,下载了Sunny UI源码,修改内容如下

 

 

 

找到UIButton代码新增重写

private string _text;
        // 重写 Text 属性
        [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
        public override string Text
        {
            get { return _text; }
            set
            {
                if (_text != value)
                {
                    _text = value;
                    Invalidate();
                }
            }
        }

  找到重绘文件修改如下

public static void DrawString(this Graphics g, string str, Font font, Color color, Size size, Padding padding, ContentAlignment align)
        {
            if (str.IsNullOrEmpty()) return;
            SizeF sf = g.MeasureString(str, font);
            using (Brush br = color.Brush())
            {
                StringFormat stringFormat = new StringFormat
                {
                    Alignment = StringAlignment.Center,
                    LineAlignment = StringAlignment.Center
                };
                stringFormat.FormatFlags = StringFormatFlags.LineLimit;

                switch (align)
                {
                    case ContentAlignment.MiddleCenter:
                        //g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f,
                        //    padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f,stringFormat);
                        RectangleF rect = new RectangleF(0, 0, size.Width, size.Height);
                        g.DrawString(str, font, br, rect, stringFormat);
                        break;

                    case ContentAlignment.TopLeft:
                        g.DrawString(str, font, br, padding.Left, padding.Top);
                        break;

                    case ContentAlignment.TopCenter:
                        g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f, padding.Top);
                        break;

                    case ContentAlignment.TopRight:
                        g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, padding.Top);
                        break;

                    case ContentAlignment.MiddleLeft:
                        g.DrawString(str, font, br, padding.Left, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f);
                        break;

                    case ContentAlignment.MiddleRight:
                        g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, padding.Top + (size.Height - sf.Height - padding.Top - padding.Bottom) / 2.0f);
                        break;

                    case ContentAlignment.BottomLeft:
                        g.DrawString(str, font, br, padding.Left, size.Height - sf.Height - padding.Bottom);
                        break;

                    case ContentAlignment.BottomCenter:
                        g.DrawString(str, font, br, padding.Left + (size.Width - sf.Width - padding.Left - padding.Right) / 2.0f, size.Height - sf.Height - padding.Bottom);
                        break;

                    case ContentAlignment.BottomRight:
                        g.DrawString(str, font, br, size.Width - sf.Width - padding.Right, size.Height - sf.Height - padding.Bottom);
                        break;
                }
            }
        }

  实在找不到就全工程搜索,

标签:SunnyUI,换行,Button,Height,padding,Width,str,sf,size
From: https://www.cnblogs.com/wxt51/p/17353293.html

相关文章

  • 关于MRS环境下printf打印不加换行无法打印显示问题
    关于MRS环境下printf打印不加换行无法打印显示问题 原因:默认情况下,stdout流是行缓冲的,因此仅在到达换行符后(或被告知时)才显示缓冲区中的内容. 关于stdout,C语言中的stdout是一个定义在<stdio.h>的宏(macro),它展开到一个FILE*(“指向FILE的指针”)类型的表达式(不一定是常量......
  • el-button实现点击按钮更换背景色并自动回显原来的样式
    场景:点击按钮的会更改背景色会自动回显默认样式点击之前:点击之后自动又恢复点击前样式 实现:我用得是element-ui的el-button组件实现,代码如下在template中设置一个id<el-buttonclass="downloadBtn"id="resetFormBtn"@click="downloadBtn">报表下载</el-button> 在m......
  • qt编译出现“常量中有换行符”
    在qt编译过程中出现“常量中有换行符”,原因有以下几点(qt版本5.9.9)2023-04-21:1.中文编码格式问题,在qt:工具-外部-配置里选择文本编辑器-行为-默认编码选为UTF-8,UTF-8BOM选为如果编码是UTF-8则添加。2.依旧采用默认编码,在需要使用中文的地方使用QStringLiteral("text......
  • oracle去掉回车换行空格操作
    评:去除换行updatezhzl_addresstsett.add_administration_num=replace(t.add_administration_num,chr(10),'');去掉回车updatezhzl_addresstsett.add_administration_num=replace(t.add_administration_num,chr(13),'');去掉空格updatezhzl_addre......
  • vuejs实现文字逐个显示效果且可以换行
    实现方式:开始文字设置为空,然后通过添加定时器截取content字符串来实现。效果展示如下:具体实现如下:<template><div><divv-html=“showText ”></div></div></template><script>exportdefault{data(){return{......
  • EasyUI Linkbutton 链接按钮/easyui的学习网站
    https://www.jeasyui.net/plugins/187.html关于easyui的学习,可以在这个网站:https://www.jeasyui.net/链接按钮(linkbutton)用于创建一个超链接按钮。它是一个正常的<a>标记的表示。它可显示图标和文本,或者仅仅显示图标和文本中的一个。按钮宽度可动态收缩/扩展以适应其文本标签......
  • event.button
    event.x鼠标横轴event.y鼠标纵轴event.keycode键盘值events.button==0默认。没有按任何按钮。events.button==1鼠标左键events.button==2鼠标右键events.button==3鼠标左右键同时按下events.button==4鼠标中键events.button==5鼠标左键和中键同时按下events.button==6鼠......
  • wpf DataGrid 自动换行
    <DataGridTemplateColumnHeader="内容"Width="5*"MinWidth="70"><DataGridTemplateColumn.CellTemplate><DataTemplate><Tex......
  • Sublime Text 修改文件编码和换行符
    1、SublimeText修改文件编码和换行符1.1设置项优化{"ignored_packages":["Vintage",],//设置主题"theme":"auto","color_scheme":"Mariana.sublime-color-scheme",//设置字体大小......
  • 3、Markdown 换行语法
    Markdown换行语法在一行的末尾添加两个或多个空格,然后按回车键,即可创建一个换行(<br>)。Markdown语法HTML预览效果Thisisthefirstline.Andthisisthesecondline.<p>Thisisthefirstline.<br>Andthisisthesecondline.</p>Thisisthefirstline......