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

学习笔记:delphi之TStringGrid

1、说明 最近加入了一个项目组,使用开发工具是delphi6,想想又要开始搞这个工具有点小忧伤,但没办法谁让咱就是个打杂尼。。。...所以主要技术点: 1、自绘方法,直接就用OnDrawCell事件处理 2、表头,可以使用FixCol和FixRow属性 3、文本换行 3、开发 3.1、属性设置 DefaultDrawing:设置为...、计算每行文本高度 这个我找了半天也没找到比较简单好用方法,最后就用TLabel这个控件来完成。...高度设置为StringGrid行高,这样就能显示多行文本了。...这样就得到了实际文本高度。 DT_CALCRECT 就是用于计算文本矩形宽高哦。 调用上面那句代码后,cellRect就会计算文本显示矩形大小了。同样就得到了宽高。

1.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

学习笔记 :DrawText

最近在做一个TStringGrid自绘处理,在画文字处理上遇到了高度计算问题。...如果输出文本有多行,DrawText函数使用lpRect定义矩形宽度,并扩展矩形底部以容纳输出文本最后一行。...如果输出文本只有一行,则DrawText函数改变矩形右边界,以容纳下正文行最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本高度,而不是绘制文本。...DT_SINGLELINE:单行显示文本,回车和换行符都不断行。 函数里面最后面那段蓝字标示很重要,DT_CALCRECT就是用来计算文本尺寸哦。。...这个参数传入时是做为计算文本显示矩形大小,返回时就是文本实际占用矩形大小。 同时DrawText运算后也会有函数返回值,就是文本实际高度

1K50

DrawText

大家好,又见面了,我是你们朋友全栈君。 DrawText  函数功能:该函数在指定矩形里写入格式化文本,根据指定方法对文本格式化(扩展制表符,字符对齐、折行等)。   ...,DrawText返回格式化正文 高度而不是写正文。   ...DT_EXTERNALLEADING:在行高度里包含字体外部标头,通常,外部标头不被包含在 正文行高度里。   DT_INTERNAL:用系统字体来计算正文度量。   ...DT_SINGLELINE:显示正文同一行,回车和换行符都不能折行。   ...当一行中字符将会延伸到由lpRect指定矩形边框时,此 行自动地在字之间断开。一个回车一换行也能使行折断。   DT_WORD_ELLIPSIS:截短不符合矩形正文,并增加椭圆。

68620

我做了一个在线白板(二)

计算文本宽高,文本是可以换行,所以整体宽度为最长那行文字宽度,宽度计算通过创建一个div元素将文本塞进去,设置样式,然后使用getBoundingClientRect获取div宽度,也就是文字宽度...;// 计算出行高 let height = lines * lineHeight;// 行数乘行高计算文本整体高度 return { width, height..., }; }; 文本宽和高分成了两部分进行计算高度直接是行数和行高相乘得到,看一下计算宽度逻辑: // 计算换行文本实际宽度 export const getWrapTextActWidth...newRect,假设原始矩形宽高比为2,新矩形宽高比为1,新小于旧,那么如果要比例相同,需要调整新矩形高度,反之调整新矩形宽度,计算等式为: newRect.width / newRect.height.../ originRatio; } else if (newRatio > originRatio) {// 新矩形比例大于原始矩形比例,高度不变,调整新矩形宽度 x1 = newRect.x

1.4K30

掌握这些CSS知识点,Coding如飞!

,body实际计算高度为内容撑开高度,即为0(可以将上述代码border样式取消注释,可看到body高度) 那么子元素block类高度即等同于0 body { background-color...盒子高度无效,height为0,即在浏览器上无渲染高度 浏览器渲染规则可理解记忆为:深度优先遍历计算 子元素相对单位计算值都是基于父/祖先元素对应属性值,auto是基于内容区域撑开计算所得。...2.1 百分比单位计算 自己之前一直有个误区,认为padding、margin百分比单位计算基数是当前元素矩形区域宽高来算,但是根据包含块规则,他们计算基数应该是包含块width值。...,而所在矩形框高计算值需要加上padding和border宽度,所以变成了一个椭圆。...line-height值为纯数字时,当前行高会根据当前文本 font-size*line-height 计算所得。

96620

VCL组件之编辑控件「建议收藏」

—— 为True时,编辑框高度会自动适应输入文本字体高度(必须要BorderStyle属性为bsSingle时才有效) CanUndo —— 编辑框内文字修改能否通过undo方法来撤销 CharCase...,使用Memo组件,但把它高度做成标准Edit组件高度,然后需要时设置Alignment属性。...Note 只要可能就保持窗体时标准,尽管可以把Edit组件做成喜欢那么高,如果高度超出标准Windows编辑控件高度(对用户来说看起来像多行编辑控件),会使用户糊涂。...类 HideScrollBars——当文本长度很短,不需要滚动时,是否隐藏滚动条 PageRect——指定在打印RichEdit控件内容时,以像素为单位计算纸张面积 Paragraph——指定当前段格式...指定了数字最大值 MinValue——指定了数字最小值 对于每个编辑组件全部方法请参见Delphi在线帮助。

1.9K20

【Android】TextView文字长度测量及各种padding解析

虽然我们平时只用TextView显示纯文本数据,但其实TextView支持设置Background,四周drawable小图标,以及Span数据比如文本或图片。...在Android里不管是什么控件都是占据一个矩形空间,各个矩形之间基本都可以设置padding属性,这样一来TextView就被分成多个矩形区域了,而TextView也提供了获取各种padding和长度接口...至于extendedPadding和totalPadding这两个应用场景,我想了想,觉得应该是涉及需要计算显示出来后文字高度相关需求时会用到吧。...但其实这两个效果是不一样,官方api接口里有说明,都是英文我就不贴图了,大概翻译下: maxLines:限制TextView最高高度,大概就是指通过限制行数来限制最高高度。...如果是maxLines="1"的话,那么就像上一问中分析那样,所有的文字其实已经被自动换行了,只显示第一行,而换行是什么,就是为了让每行文字长度超过文字区域宽度才进行换行,也就是说,如果一段文字经过

3.6K70

【IOS开发基础系列】UITextView专题

最终,该对象包含信息将用于文本绘制。该参数可为 nil 。 返回值         一个矩形,大小等于文本绘制完将占据宽和高。 讨论         可以使用该方法计算文本绘制所需空间。...size 参数是一个constraint,用于在绘制文本时作为参考。但是,如果绘制完整个文本需要更大空间,则返回矩形大小可能比 size更大。...一般,绘制时会采用constraint 提供宽度,但高度则会根据需要而定。 特殊情况         为了计算文本大小,该方法采用默认基线。...如果NSStringDrawingUsesLineFragmentOrigin未指定,矩形高度将被忽略,同时使用单线绘制。...解决方案:         将计算出来高度值做向下取整处理即可。

28740

如何用canvas实现一个富文本编辑器

我们大致做法大致如下: 1.遍历数据列表,计算出每项数据字符宽高 2.根据页面宽度,计算出每一行包括数据项,同时计算出每一行宽度和高度高度即为这一行中最高数据项高度 3.逐行进行绘制,同时根据页面高度判断...,如果超出当前页,则绘制到下一页 计算行数据 canvas提供了一个measureText方法用来测量文本,但是返回只有width,没有height,那么怎么得到文本高度呢,其实可以通过返回另外两个字段...来测量文本字符宽高,遍历所有数据,如果当前行已满,或者遇到换行符,那么新创建一行。...2.点击是一行第一个字符前半部分 当我们点击是一行第一个字符前半部分,目前显示会有点问题: 和后一个字符重叠了,这是因为我们计算问题,前面的计算行数据逻辑没有区分换行符,所以计算出来换行符也存在宽度...,那么高度默认为字号,否则还是走之前逻辑,同时我们把换行符存在宽度问题也一并修复了。

1.1K40

剖析 Figma 数据结构:不同图形特有属性

所以在计算时,需要将弧度转换到 (-2*PI, 2*PI] 区间,再转为角度。...图片 图片是特殊矩形,其填充属性 fillPaints 使用了类型为 IMAGE paint。 文本 TEXT 文本图形,支持富文本文本图形属性非常多,这里只介绍一些常用。...id; textData.baselines:基线对象数组,在换行情况下,基线会有多条; textData.glyphs:每个字形 SVG path 表达; textData.fontMetaData...:字体元信息,比如字重; ... letterSpacing:字间距; autoRename:自动重命名,默认为 true,此时图形名称会自定跟随文本内容更新; textAutoResize:文字是有一个包围矩形...默认为 WIDTH_AND_HEIGHT(宽高自动根据文字内容和换行适应),此外还有 HEIGHT(宽度固定,高度自适应)、NONE(文字内容不会改变矩形宽高,必要时会溢出矩形) 结尾 这些就是 Figma

14910

手把手带你上手D3.js数据可视化系列(二)手把手带你上手D3.js数据可视化系列(二)

画布设置好后,先来整体看看大西洋手抄本可视化作品源码里是如何根据画布大小和数据多少计算每个矩形宽度 rectWidth ,由于矩形高度均是宽度1.5倍,所以无需另外计算。...rectWidth + totalMargin,整体高度是 1.5 * rectWidth + totalMargin(上面说过矩形实际高度总是宽度1.5倍)。...而且后面实际绘制矩形时,就会发现确实是矩形实际高度为实际宽度1.5倍,而不是整体高度为整体宽度1.5倍,所以可知这里是近似后,应该就是为了简化计算。...但古柳想到类似上篇文章「手把手带你上手D3.js数据可视化系列(一) - 牛衣古柳 2021.07.30」里调整布局,换行显示部分,如果这里也分别对宽高进行限制,即每一行最后一个矩形整体要在画布内,...'rect'),并且采用取余取整操作,计算出每个矩形x/y坐标值,和上一票最后调整布局换行显示都类似,应该无需过多解释了。

3K10

不同大小文字底部对齐,为什么不能使用flex-end

:图片可以看到两个字体所在矩形虽然对齐了,但是两个文字底部并没有对齐。...有以下几个原因:在 line-height: 1 情况下,文字如果长度不定,出现了换行,就会出现两行文字紧贴在一起情况,如下。...这里有点反直觉,line-height: 1 直觉上应该和字体高度是一致,但是在实际运行过程中发现,并不是这样,主要和设备字体有关,这里后面再详细探讨具体原因。...基本原理是 矩形区域高度 = (line-height) ≈ (fontSize + 透明边距)。...而 first baseline 和 last baseline 应该是在多行文本情况下有多个 baseline 情况时,要对齐第一个 baseline 还是最后一个 baseline,实测如下:first

53940

《GPTs 实战:新春贺卡制作》

然后设定文本与图片边缘距离,根据计算获取文本具体范围 5. 当段落内容过长,超出具体步骤4中计算文本范围时,应该在不影响单词显示情况下,进行自动换行(增加"\n")。...根据计算文本整体内容高度,调整文本整体位置,使文本整体垂直高度居中,并且确保文本依然保持原有的格式,同时整体文本居中。...然后设定文本与图片边缘距离,根据计算获取文本具体范围 5. 当段落内容过长,超出具体步骤4中计算文本范围时,应该在不影响单词显示情况下,进行自动换行(增加"\n")。...根据计算文本整体内容高度,调整文本整体位置,使文本整体垂直高度居中,并且确保文本依然保持原有的格式,同时整体文本居中。...根据计算文本整体内容高度,调整文本整体位置,使文本整体垂直高度居中,并且确保文本依然保持原有的格式,同时整体文本居中。

20310

SVG与foreignObject元素

SVGtext元素提供了基本文本渲染功能,可以在指定位置绘制单行或多行文本,然而SVG并没有提供像HTML和CSS中强大布局功能,比如文本自动换行、对齐方式等,这意味着在SVG中实现复杂文本布局需要手动计算和调整位置...那么如果使用text来绘制文本在日常使用中最大问题实际上就是文本换行,如果只是平时人工来绘制SVG可能并没有什么问题,text同样提供了大量属性来展示文本,但是想做一个通用解决方案可能就麻烦一点了...,举个例子如果我想批量生成一些SVG,那么人工单独调整文本是不太可能,当然在这个例子中我们还是可以批量去计算文字宽度来控制换行,但是我们更希望是有一种通用能力来解决这个问题。...此外标签不能直接放在标签内部,其具有严格嵌套规则,标签是一个独立元素,用于在SVG画布上绘制文本,而标签是用于绘制矩形元素,所以绘制矩形并没有限制文本展示范围...如果想实现换行效果,则必须要自行计算文本长度与高度进行切割来计算位置: ----------------------------------- | This is a long text that

38760

真•文本环绕问题探究和分享

appBar: AppBar(), body: SingleChildScrollView(child: RichText(text: textSpan)), ); } } 看文本中包含图片一行高度等于图片高度...该函数通过传入一个位置偏移量来计算出距离该位置处最近文本偏移量 getBoxesForSelection: 该函数通过传入一个文本区域计算出这个区域中布局方格,通常情况下每行一个方格,不过在遇到双向文本特殊情况会在一行计算出多个布局方格...最难点:文本分割 正如我们所知道,RichText接收数据为一个单个TextSpan,且这个TextSpan会有N层嵌套,它不是一个简单文本字符串,如何来计算这个TextSpan该从哪里分割是困扰我最大问题...affinity: 辅助定位,主要为了应对双向文本或者强制换行时候光标应该在哪个位置 根据TextPosition找到指定分割位置: 通过遍历TextSpan,累积增加文本长度直到查找到TextPosition...这里用到了前文提到getPositionForOffset方法,当我们划分好矩形方块之后即可传入矩形右下角位置获取这个矩形能够放置TextSpanTextPosition了。

19620

『知识巩固#1』Html、Css基础整理

Html 标签学习 排版标签 标题 h1、h2、h3、h4、h5、h6只有这六个 段落标签 p标签 段落之间有空隙换行 换行标签 br 空换行 hr 下划线换行 文本格式化标签...colspan 明确合并哪几个单元格 通过左上原则,确定保留谁,删除谁 给保留单元格设置属性 表单 input系列 type属性值如下: text 文本框,用于输入单行文本换行 即写代码需要...行高 = 上间距 + 文本高度 + 下间距 应用 单行文本垂直居中 可以设置为line-height: 文字父元素高度 注意点 如果同时设置了行高和font连写,注意覆盖问题 font: style...、 border-style、 border-color 也可以拆分为单个方向 属性名为: borde-方位名词 属性值连写 大小计算 盒子宽度 = 左边框 + 内容宽度 + 右边框 盒子高度 = 上边框...② 设置border会撑大盒子 ③ 设置padding会撑大盒子 优化计算公式 盒子宽度 = 左边框 + 左padding + 内容宽度 + 右padding + 右边框 盒子高度 = 上边框 + 上

4K20
领券