C#自定义可以调行距的Lable

怎样改变winform中label中文字的行距 这是一个类,相当于把label重写了,这样label然后就多了一个属性,调节属性就可以调节行距了 立即下载
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace jmyd.extend
{
    public partial class myLabel : System.Windows.Forms.Label
    {
        int lineDistance = 1;//行间距   

        public int LineDistance
        {
            get { return lineDistance; }
            set { lineDistance = value; }
        }
        public myLabel()
        {
            //InitializeComponent();
        }

        public myLabel(IContainer container)
        {
            container.Add(this);
            //InitializeComponent();
        }
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            try
            {
                Graphics g = e.Graphics;
                String drawString = this.Text;
                Font drawFont = this.Font;
                SolidBrush drawBrush = new SolidBrush(this.ForeColor);
                SizeF textSize = g.MeasureString(this.Text, this.Font);//文本的矩形区域大小   
                int lineCount = Convert.ToInt16(textSize.Width / this.Width) + 1;//计算行数   

                this.Height = Convert.ToInt16((textSize.Height + lineDistance) * lineCount);//计算调整后的高度   
                this.AutoSize = false;
                float x = 0.0F;
                StringFormat drawFormat = new StringFormat();
                int step = 1;
                lineCount = drawString.Length;//行数不超过总字符数目   
                for (int i = 0; i < lineCount; i++)
                {
                    //计算每行容纳的字符数目   
                    int charCount;
                    for (charCount = 0; charCount < drawString.Length; charCount++)
                    {
                        string subN = drawString.Substring(0, charCount);
                        string subN1 = drawString.Substring(0, charCount + 1);
                        if (g.MeasureString(subN, this.Font).Width <= this.Width
                                && g.MeasureString(subN1, this.Font).Width > this.Width)
                        {
                            step = charCount;
                            break;
                        }
                    }
                    string subStr;
                    if (charCount == drawString.Length)//最后一行文本   
                    {
                        subStr = drawString;
                        e.Graphics.DrawString(subStr, drawFont, drawBrush, x, Convert.ToInt16(textSize.Height * i) + i * LineDistance, drawFormat);
                        break;
                    }
                    else
                    {
                        subStr = drawString.Substring(0, step);//当前行文本   
                        drawString = drawString.Substring(step);//剩余文本   
                        e.Graphics.DrawString(subStr, drawFont, drawBrush, x, Convert.ToInt16(textSize.Height * i) + i * LineDistance, drawFormat);
                    }
                }
            }
            catch
            { }
        }
    }
}

 

缺点:由于使用了OnPaint事件,会不断的调用,性能减低了。
转:http://gyy627.blog.163.com/blog/static/4293327520103140139684/ 

label自适应高度可设置行间距字间距 立即下载

相关推荐

2006NOIP普及组真题 4. 数列

从上述推理中,我们发现要输出的幂次和中的第 N 项(也就是幂次和中的序号N),对应的二进制位数和幂次和对应的二进制位数相同。当 k=3 时,k的幂次为1, 3, 9, 27, 81…,即第0位,第2位均为1,转成 k 进制(k=3)时。,即第2位,第3位均为1,转成 k 进制(k=3)时。转成 k 进制(k=3)时的幂次和为。,即第0位,第1位,第2位均为1,(即第0位,第1位,第2位均为1)N=12时,12的二进制是。(即第0位,第2位均为1)(即第2位,第3位均为1)结论:这道题就变成了。

weixin_40252159的博客 1513

c# label 自定义行间距

c# label 自定义行间距

chen1231985111的博客 1663

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11)

本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。

weixin_30684743的博客 427

设置Label的行间距

首先定义Label,设置numberOfLines为0(可以自动换行),然后调用自定义类方法,将label的text值传入。 +(NSMutableAttributedString *)atrString:(NSString *)text{     //创建NSMutableAttributedString实例,并将text传入     NSMutableAttributedString *

Sheffi 1691

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 485

DSP 6678处理器Cache配置实战:从基础设置到多核一致性优化

本文深入探讨了TI TMS320C6678多核DSP处理器的Cache配置与优化实战。文章从基础概念入手,详细解析了L1、L2 Cache的模式选择与内存属性配置,并重点剖析了多核环境下缺乏硬件一致性支持带来的挑战。核心部分提供了基于Writeback和Invalidate操作的手动一致性维护策略,以及针对数据流处理、频繁访问共享数据等不同场景的性能调优与避坑指南,帮助开发者构建高效稳定的多核DSP系统。

o5p6q的博客 182

请教:如何设置Lable中的字符间距和行距!前提是不改变字体字号.

请教:如何设置Lable中的字符间距和行距!前提是不改变字体字号. Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiBase/html/delphi_20061215001442150.html 请教:如何设置Lable中的字符间距和行距!前提是不改变字体字号. 加空格^_^         没有好的办法,你用个TIm...

weixin_33910434的博客 283

Paho Asynchronous MQTT C Client Library--MQTTAsync API

异步MQTT 客户端库for C

yoyo勰的博客 1263

可设置行距的Label

WinForm开发中自定义Label

sloder的专栏 9263

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 278

【运动规划算法项目实战】如何使用Pure Pursuit算法进行路径跟踪(附ROS C++代码)

在自动驾驶和机器人导航领域,路径跟踪是一项关键技术,它使车辆或机器人能够按照预定的路径规划进行移动。路径跟踪算法的选择对于系统性能和安全性至关重要。本文将介绍一种常用且有效的路径跟踪算法——Pure Pursuit算法。我们将详细讨论Pure Pursuit算法的原理、实现步骤以及如何在自动驾驶和机器人系统中应用该算法进行路径跟踪。Pure Pursuit是一种用于路径跟踪的控制算法。它通过计算角速度控制机器人从当前位置移到机器人前方的某个预瞄点。假定线速度是恒定的,当然可以随意更改机器人的线速度。

xiewf的博客 1万+

winform的label内容居中_C# Winform label自定义大小与居中,文字自动换行,背景透明和导入图片...

在 Winform 中,默认情况下,label 是根据文本自动调整大小的,不能自由设置其宽度和高度,不管怎么修改其宽度与高度,它都会变回原来的值。难道 label大小不能自定义,当然不是,需要先设置 label 的一个属性才可以自定义 label 的宽度与高度。定义 label 宽度与高度后,文字默认显示在 label 的左上角,如果要使其居中,应该怎么设置?这也要设置 label 一个属性。另外...

weixin_39887386的博客 1558

【水文学法总结】河道内生态流量计算方法(含MATLAB实现代码)

简介水文学法实现河道内生态流量计算

WW、forever的博客 5014

label设置行间距,换行剧中方法

// 创建一个Label UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 300, 300)]; // 设置为多行显示 label.numberOfLines = 0; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagrap...

dcuynr6314的博客 560

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WinForm中Label控件换行显示并加滚动条

一、需求 升级日志内容在窗体中显示出来,当内容不太多时完全显示无滚动条,内容非常多时高度控制在500px超出部分添加滚动条,通过滚动滚动条进行显示。 二、实现 显示内容通过label控件来显示并把label控件放到一个panel中。 三、遇到的问题 内容非常多时无法达到需求所要求的UI样式。主要表现是内容非常多时设置label的父控件panel的autoscroll属性为TRUE,出现横

仰望星空的代码 7291

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

设置UILabel的行间距

今天面试被问到UILabel的行间距,以前没了解过这个细节,回来查了一下,很简单。 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 20)]; label.backgroundColor = [UIColor lightGrayColor]; [lab

程序璇 477

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

调整Lable字体行间距

/**     调整label.text字体间距  */ - (void)changeHeightOfLabelLineWithContentLabel:(UILabel*)contentLabel {     NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc]initWit

alsnmg的专栏 680

Label设置行间距

Label设置行间距内容摘要 UILabel显示多行文本 UILabel设置行间距 解决单行文本 & 多行文本显示的问题 场景描述 众所周知,UILabel显示多行的话,默认行间距为0,但实际开发中,如果显示多行文本,一般情况下会有一定的行间距。如果想动态调整行间距,则需要赋值富文本属性(而不是文本属性) 问题分析Label显示多行文本 label默认情况下,只会显示单行文本,主要是因为它的numb

Cheny的博客 3万+

C# winform自定义Label控件使其能设置行距

1)在windows窗体应用程序中添加组件类代码如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.ComponentModel; namespace WindowsFormsApplica

czh4869623的专栏 1万+

设置label 的 字间距 和行间距

// 设置 文字间距          NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];     NSMutableAttributedString *attributedString =  [[NSMutableAttributedString alloc] initWithSt

HuangShi_DaXia的专栏 3995

使用GDI+ DrawDriverString实现行距及字符间距控制

主要是要将一个标题和几段文字绘制到固定大小的图片上,如果一张放不下就生成多张。在使用DrawString是发现无法控制行距 namespace TibetTest {     public class Utils     {         //     }     public class ConvertImage     {         public bool TextToImage(s...

weixin_33834679的博客 3434

调整Label的行距

CGFloat heih = 20;   NSString * cLabelString = @"       这是测试UILabel行间距的text。这是测试UILabel行间距的text。\n       这是测试UILabel行间距的text。\n       这是测试UILabel行间距的text。这是测试UILabel行间距的text。这是测试UILabel行

gyq605949540的专栏 602

设置label的行间距和字间距,动态计算该label高度(记录)

       NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:model.cinemaAddress];         NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyl...

helloworld_junyang的博客 1463
上一篇: 网页中无法使用摄像头的解决办法
下一篇: C#两个richTextBox同步滚动
cg_program
博客等级 码龄19年 245粉丝 147原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值