CN104731445A - 一种长文本显示方法 - Google Patents
一种长文本显示方法 Download PDFInfo
- Publication number
- CN104731445A CN104731445A CN201310720949.4A CN201310720949A CN104731445A CN 104731445 A CN104731445 A CN 104731445A CN 201310720949 A CN201310720949 A CN 201310720949A CN 104731445 A CN104731445 A CN 104731445A
- Authority
- CN
- China
- Prior art keywords
- width
- character
- mouse
- dstr
- viewing area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种长文本显示方法,包括:鼠标消息响应步骤,监控鼠标操作,判断是否需要发出重新描绘消息,由系统调用重画函数,对控件重新描绘;宽度可描绘字符数计算步骤:计算在fwidth的宽度上可以描绘的前n个完整字符,其中n为计算后的返回值;文字描绘步骤:根据待显示字符信息、鼠标消息响应单元以及宽度可描绘字符数计算单元返回的数据通过DrawText对待显示字符进行显示。本发明效率高且复杂度低,便于应用;文字随鼠标滑动而滚动显示的视觉效果良好,且可保证每个字符均完整显示;根据用户的拖动动作,显示不同部分的文字,在用户不作操作时,静态显示,为用户提供更多选择,提高用户体验。
Description
技术领域
本发明涉及汽车领域,尤其涉及一种长文本显示方法。
背景技术
在计算机系统中,特别对于显示区域较小的嵌入式系统,常常需要在指定宽度的显示区域内显示一定长度的字符串,而这个字符串的长度往会超出显示区域的宽度;如:某个文件的文件名很长,在显示这个文件名时,在指定的显示区域内无法完全显示这个字符串。针对这个问题,目前常用的方案有两种:(1)截断超出指定区域的字符并添加省略号表示有部分文字被截断,无法显示,用户只能阅读到显示出来的文字。(2)字符串自动周期性的滚动显示,这种方式虽然能够是用户到所有的文字内容,但是文字的不停滚动,特别是同一屏幕上有多个文本显示区域的文字同时一起滚动,使得用户眼花缭乱,从而是阅读变得更加困难。
发明内容
为了解决上述问题,本发明提供一种长文本显示方法的设计方案。
一种长文本显示方法,包括:鼠标消息响应步骤,监控鼠标操作,判断是否需要发出重新描绘消息,由系统调用重画函数,对控件重新描绘。宽度可描绘字符数计算步骤:计算在fwidth的宽度上可以描绘的前n个完整字符,其中n为计算后的返回值。文字描绘步骤:根据待显示字符信息、鼠标消息响应单元以及宽度可描绘字符数计算单元返回的数据通过DrawText对待显示字符进行显示。
具体的,所述鼠标消息响应步骤包括:(11)鼠标压下动作记录步骤,设置压下标志bIsPress=True,记录鼠标压下时的坐标pressPos;(12)鼠标移动动作记录步骤,计算鼠标移动偏移量MoveOffSet = 当前鼠标坐标X值currMousePos.x - 鼠标压下时的坐标X值pressPos.x;(13)鼠标释放动作记录步骤,设置压下标志为bIspress = false。
更具体的,宽度可描绘字符数计算步骤包括:(21)设置临时变量sOK为空,并使用DrawText计算完整描绘待显示字符str所需的范围Width;(22)判断Width是否小于等于可进行字符描绘的宽度fWidth,如是,则返回待显示字符str的字符长度并退出。(23)若Width>fWidth, 将待显示字符str对半拆分成sLeft、sRight, 利用DrawText计算描绘sLeft所需宽度lWidth;(24)若lWidth>fWidth,则令str=sLeft,执行步骤(23)否则令str=sRight,,并设置fWidth=fWidth–lWidth,sOK=sOK+sLeft;以上步骤中,若sRight或sLeft为空,则直接返回sOK的Length的值。
更具体的,所述文字描绘步骤包括:(31)判断指定显示区域的宽度是否能完整显示待显示字符;若是则直接对待显示字符进行描绘显示,并跳过以下步骤,否则进入步骤(32);(32)当待显示字符左对齐显示时,初始化字符显示的起始位置Pos为0;(33)当通过鼠标对指定显示区域进行操作时,创建一个宽度为等于待显示字符宽度的临时画布,令临时画布的起始位置为-Pos,大小与指定显示区域一致,并根据鼠标的操作,不断调整Pos值并截取从-Pos开始宽度等于显示区域宽度的画布区域,拷贝至指定显示区域;(34)当鼠标没有对指定显示区域进行操作时,根据Pos值,判断左侧或右侧是否有字符被截断,在指定显示区域的左侧或右侧添加省略号,计算减去省略号所占宽度后指定显示区域剩余的可描绘宽度,描绘显示从Pos开始的完整的字符。
进一步的,所述步骤(34)包括:(a)初始化临时变量DStr=待显示字符FTStr;(b)通过宽度可描绘字符数计算步骤计算-Pos宽度可描绘的待显示字符的前n字符个数;(c)如果n>=1,截取待显示字符FTStr从n+1起至尾部的字符串FTStr.Right,并在左侧添加省略号“…”,即DStr = “…” +FTStr.Right;(d)使用DrawText函数,计算描绘DStr所需的长度DStrWidth,若DStrWidth大于指定显示区域的宽度Ctrl.Width,则进入步骤(e),否则进入步骤(g);(e)使用DrawText函数,计算描绘省略号显示所需的宽度OmitWidth;计算剩余宽度nWidth = Ctrl.Width-OmitWidth,并通过使用宽度可描绘字符数计算步骤计算nWidth可描绘DStr的前m1个字符DStr.Left;(f)计算出该分支最终显示的字符串为 DStr = DStr.Left+ “…”;(g)使用宽度可描绘字符数计算步骤计算Ctrl.Width可描画DStr的前m2个字符DStr.Left,计算出该分支最终显示的字符串为 DStr = DStr.Left。
综上所述,本发明具有以下有益效果:(1)效率高且复杂度低,便于应用;(2)文字随鼠标滑动而滚动显示的视觉效果良好,且可保证每个字符均完整显示;(3)根据用户的拖动动作,显示不同部分的文字,在用户不作操作时,静态显示,为用户提供更多选择,提高用户体验。
附图说明
图1为本发明所述一种长文本显示方法的流程示意图;
图2为本发明所述鼠标压下操作流程示意图;
图3为本发明所述鼠标移动操作流程示意图;
图4为本发明所述鼠标释放操作流程示意图;
图5为本发明所述宽度可描绘字符数计算步骤流程示意图。
具体实施方式
为了让本领域的技术人员能够更好地了解本发明的技术方案,下面结合附图对本发明作进一步的阐述。
如图1所示,本发明揭示了一种长文本显示方法,包括:鼠标消息响应步骤,宽度可描绘字符数计算步骤以及文字描绘步骤。
当进行字符描绘时,首先判断指定显示区域的宽度(Ctrl.Width)是否能完整显示待显示字符(FTStr);若是则直接对待显示字符进行描绘显示,并跳过以下步骤,否则继续后续的步骤。在屏幕上描绘文字时,每个字符所需的宽度并不一致,与字符字体类型、大小有关,因此可以通过DrawText获得待显示字符(FTWidth)的宽度。当FTWidth <= Ctrl.Width,则说明控件宽度能够完整地描绘FTStr,可直接使用DrawText在画布上描绘,无须考虑鼠标是否按下或拖动。否则说明控件(即指定显示区域)宽度不足以完整描绘待显示字符,进入后继流程。当待显示字符左对齐显示时,初始化字符显示的起始位置Pos为0。
当通过鼠标对指定显示区域进行操作时,创建一个宽度为等于待显示字符宽度的临时画布。
如图2~4所示鼠标的操作可分为三种情况。在鼠标压下时,设置压下标志bIsPress=True,记录鼠标压下时的坐标pressPos。在鼠标移动时,计算鼠标移动偏移量MoveOffSet = 当前鼠标坐标X值currMousePos.x -鼠标压下时的坐标X值 pressPos.x。
当Ctrl.Width-(Pos+MoveOffSet)> FTWidth时,表示字符串己滑动至最左侧,将无法再向左侧移动,这时Pos = Ctrl.Width - FTWidth。当Pos+MoveOffSet >= 0时,则表示字符串己滑动至最右侧,将无法再向右侧移动,这时Pos = 0(Pos必须小于等于0)。当字符串不是滑动至最左侧或最右侧时,则Pos = Pos + MoveOffset。
在鼠标释放时,设置压下标志为bIspress = false。
因此,根据bIsPress变量的值,便可得知当前鼠标是否被按下。令临时画布的起始位置为-Pos,大小与指定显示区域一致,并根据鼠标的操作,不断调整Pos值并截取从-Pos开始宽度等于显示区域宽度的画布区域,拷贝至指定显示区域。因Pos<=0,所以临时画布的起始位置为-Pos,大小与控件一致,拷贝时,不需要考虑是否有单个字符只被截取一部分,这样可以产生一种文字随鼠标平滑滚动的效果。
当鼠标被释放时,需要对待显示的字符重新进行描绘。
初始化临时变量DStr=待显示字符FTStr;若Pos<0(即左侧是超出控件区域或左侧有字符被截断),通过宽度可描绘字符数计算步骤计算-Pos宽度可描绘的待显示字符的前n字符个数,如果n>=1,截取待显示字符FTStr从n+1起至尾部的字符串FTStr.Right,并在左侧添加省略号“…”,即DStr = “…” +FTStr.Right。
其中宽度可描绘字符数计算步骤如图5所示:(21)设置临时变量sOK为空,并使用DrawText计算完整描绘待显示字符str所需的范围Width;(22)判断Width是否小于等于可进行字符描绘的宽度fWidth,如是,则返回待显示字符str的(nLen = str.Length())并退出;(23)若Width>fWidth, 将待显示字符str对半拆分成sLeft、sRight, 利用DrawText计算描绘sLeft所需宽度lWidth;(24)若lWidth>fWidth,则令str=sLeft,执行步骤(23),否则令str=sRight,并设置fWidth=fWidth–lWidth,sOK=sOK+sLeft。
以上步骤中,若sRight或sLeft为空,则直接返回sOK的Length的值(即字符长度)。
使用DrawText计算描绘DStr所需的长度DStrWidth,若DStrWidth大于指定显示区域的宽度Ctrl.Width,则使用DrawText函数,计算描绘省略号显示所需的宽度OmitWidth;计算剩余宽度nWidth = Ctrl.Width-OmitWidth,并通过使用宽度可描绘字符数计算步骤计算nWidth可描绘DStr的前m1个字符DStr.Left;计算出该分支最终显示的字符串为 DStr = DStr.Left+ “…”。
若DStrWidth小于等于指定显示区域的宽度Ctrl.Width使用宽度可描绘字符数计算步骤计算Ctrl.Width可描画DStr的前m2个字符DStr.Left,计算出该分支最终显示的字符串为 DStr = DStr.Left。
最终通过DrawText将DStr 进行描绘。
当控件创建、鼠标压下、鼠标移动、鼠标释放,均需对控件进行重新描绘,即对指定显示区域所要显示的字符进行重新描绘。
本实施例只是本发明的较优实施方式,未进行详细描述的部分均采用公知的成熟技术。需要说明的是,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (5)
1.一种长文本显示方法,其特征在于,包括:
鼠标消息响应步骤,监控鼠标操作,判断是否需要发出重新描绘消息,由系统调用重画函数,对控件重新描绘;
宽度可描绘字符数计算步骤:计算在fwidth的宽度上可以描绘的前n个完整字符,其中n为计算后的返回值;
文字描绘步骤:根据待显示字符信息、鼠标消息响应单元以及宽度可描绘字符数计算单元返回的数据通过DrawText对待显示字符进行显示。
2.根据权利要求1所述的一种长文本显示方法,其特征在于,所述鼠标消息响应步骤包括:
(11)鼠标压下动作记录步骤,设置压下标志bIsPress=True,记录鼠标压下时的坐标pressPos;
(12)鼠标移动动作记录步骤,计算鼠标移动偏移量MoveOffSet = 当前鼠标坐标X值currMousePos.x - 鼠标压下时的坐标X值pressPos.x;
(13)鼠标释放动作记录步骤,设置压下标志为bIspress = false。
3.根据权利要求2所述的一种长文本显示方法,其特征在于,宽度可描绘字符数计算步骤包括:
(21)设置临时变量sOK为空,并使用DrawText计算完整描绘待显示字符str所需的范围Width;
(22)判断Width是否小于等于可进行字符描绘的宽度fWidth,如是,则返回待显示字符str的字符长度并退出;
(23)若Width>fWidth, 将待显示字符str对半拆分成sLeft、sRight, 利用DrawText计算描绘sLeft所需宽度lWidth;
(24)若lWidth>fWidth,则令str=sLeft,执行步骤(23)否则令str=sRight,,并设置fWidth=fWidth–lWidth,sOK=sOK+sLeft;
以上步骤中,若sRight或sLeft为空,则直接返回sOK的Length的值。
4. 根据权利要求3所述的一种长文本显示方法,其特征在于,所述文字描绘步骤包括:
(31)判断指定显示区域的宽度是否能完整显示待显示字符;若是则直接对待显示字符进行描绘显示,并跳过以下步骤,否则进入步骤(32);
(32)当待显示字符左对齐显示时,初始化字符显示的起始位置Pos为0;
(33)当通过鼠标对指定显示区域进行操作时,创建一个宽度为等于待显示字符宽度的临时画布,令临时画布的起始位置为-Pos,大小与指定显示区域一致,并根据鼠标的操作,不断调整Pos值并截取从-Pos开始宽度等于显示区域宽度的画布区域,拷贝至指定显示区域;
(34)当鼠标没有对指定显示区域进行操作时,根据Pos值,判断左侧或右侧是否有字符被截断,在指定显示区域的左侧或右侧添加省略号,计算减去省略号所占宽度后指定显示区域剩余的可描绘宽度,描绘显示从Pos开始的完整的字符。
5.根据权利要求4所述的一种长文本显示方法,其特征在于,所述步骤(34)包括:
(a)初始化临时变量DStr=待显示字符FTStr;
(b)通过宽度可描绘字符数计算步骤计算-Pos宽度可描绘的待显示字符的前n字符个数;
(c)如果n>=1,截取待显示字符FTStr从n+1起至尾部的字符串FTStr_Right,并在左侧添加省略号“…”,即DStr = “…” +FTStr_Right;
(d)使用DrawText函数,计算描绘DStr所需的长度DStrWidth,若DStrWidth大于指定显示区域的宽度Ctrl.Width,则进入步骤(e),否则进入步骤(g);
(e)使用DrawText函数,计算描绘省略号显示所需的宽度OmitWidth;计算剩余宽度nWidth = Ctrl.Width-OmitWidth,并通过使用宽度可描绘字符数计算步骤计算nWidth可描绘DStr的前m1个字符DStr.Left;
(f)计算出该分支最终显示的字符串为 DStr = DStr.Left+ “…”;
(g)使用宽度可描绘字符数计算步骤计算Ctrl.Width可描画DStr的前m2个字符DStr.Left,计算出该分支最终显示的字符串为 DStr = DStr.Left。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720949.4A CN104731445B (zh) | 2013-12-24 | 2013-12-24 | 一种长文本显示方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310720949.4A CN104731445B (zh) | 2013-12-24 | 2013-12-24 | 一种长文本显示方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731445A true CN104731445A (zh) | 2015-06-24 |
CN104731445B CN104731445B (zh) | 2018-11-30 |
Family
ID=53455396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310720949.4A Active CN104731445B (zh) | 2013-12-24 | 2013-12-24 | 一种长文本显示方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731445B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210851A (zh) * | 2016-06-30 | 2016-12-07 | 乐视控股(北京)有限公司 | 标题显示控制方法及装置 |
CN106569657A (zh) * | 2016-10-18 | 2017-04-19 | 上海斐讯数据通信技术有限公司 | 一种图标名称显示系统以及图标名称显示方法 |
CN107291335A (zh) * | 2017-06-30 | 2017-10-24 | 北京酷我科技有限公司 | 一种内容滚动呈现的方法 |
CN107608596A (zh) * | 2017-09-21 | 2018-01-19 | 掌阅科技股份有限公司 | 一种电子书翻页的方法、终端及存储介质 |
CN108710601A (zh) * | 2018-05-14 | 2018-10-26 | 广州腾讯科技有限公司 | 一种文本显示方法及其设备、存储介质、电子设备 |
CN110971847A (zh) * | 2018-09-28 | 2020-04-07 | 杭州海康威视数字技术股份有限公司 | 屏幕显示内容叠加方法、装置、电子设备以及存储介质 |
CN111522610A (zh) * | 2020-03-27 | 2020-08-11 | 口碑(上海)信息技术有限公司 | 信息显示方法、装置及设备 |
CN114827718A (zh) * | 2022-06-27 | 2022-07-29 | 全时云商务服务股份有限公司 | 云会议中实时视频合屏文字自适应对齐显示的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684061A (zh) * | 2004-04-16 | 2005-10-19 | 佳能株式会社 | 文档处理装置及其控制方法 |
WO2006096139A1 (en) * | 2005-03-10 | 2006-09-14 | National University Of Singapore | An authoring tool and method for creating an electronic document |
CN102193905A (zh) * | 2011-05-26 | 2011-09-21 | 广东威创视讯科技股份有限公司 | 基于gdi/gdi+的虚拟文本编辑方法及装置 |
CN102436439A (zh) * | 2010-09-29 | 2012-05-02 | 鸿富锦精密工业(深圳)有限公司 | 文本框及文本显示方法 |
-
2013
- 2013-12-24 CN CN201310720949.4A patent/CN104731445B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684061A (zh) * | 2004-04-16 | 2005-10-19 | 佳能株式会社 | 文档处理装置及其控制方法 |
WO2006096139A1 (en) * | 2005-03-10 | 2006-09-14 | National University Of Singapore | An authoring tool and method for creating an electronic document |
CN102436439A (zh) * | 2010-09-29 | 2012-05-02 | 鸿富锦精密工业(深圳)有限公司 | 文本框及文本显示方法 |
CN102193905A (zh) * | 2011-05-26 | 2011-09-21 | 广东威创视讯科技股份有限公司 | 基于gdi/gdi+的虚拟文本编辑方法及装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106210851A (zh) * | 2016-06-30 | 2016-12-07 | 乐视控股(北京)有限公司 | 标题显示控制方法及装置 |
CN106569657A (zh) * | 2016-10-18 | 2017-04-19 | 上海斐讯数据通信技术有限公司 | 一种图标名称显示系统以及图标名称显示方法 |
CN107291335A (zh) * | 2017-06-30 | 2017-10-24 | 北京酷我科技有限公司 | 一种内容滚动呈现的方法 |
CN107608596A (zh) * | 2017-09-21 | 2018-01-19 | 掌阅科技股份有限公司 | 一种电子书翻页的方法、终端及存储介质 |
CN108710601A (zh) * | 2018-05-14 | 2018-10-26 | 广州腾讯科技有限公司 | 一种文本显示方法及其设备、存储介质、电子设备 |
CN108710601B (zh) * | 2018-05-14 | 2022-04-01 | 广州腾讯科技有限公司 | 一种文本显示方法及其设备、存储介质、电子设备 |
CN110971847A (zh) * | 2018-09-28 | 2020-04-07 | 杭州海康威视数字技术股份有限公司 | 屏幕显示内容叠加方法、装置、电子设备以及存储介质 |
CN110971847B (zh) * | 2018-09-28 | 2022-07-05 | 杭州海康威视数字技术股份有限公司 | 屏幕显示内容叠加方法、装置、电子设备以及存储介质 |
CN111522610A (zh) * | 2020-03-27 | 2020-08-11 | 口碑(上海)信息技术有限公司 | 信息显示方法、装置及设备 |
CN114827718A (zh) * | 2022-06-27 | 2022-07-29 | 全时云商务服务股份有限公司 | 云会议中实时视频合屏文字自适应对齐显示的方法和装置 |
CN114827718B (zh) * | 2022-06-27 | 2022-10-28 | 全时云商务服务股份有限公司 | 云会议中实时视频合屏文字自适应对齐显示的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104731445B (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731445A (zh) | 一种长文本显示方法 | |
US11487426B2 (en) | Apparatus and method for cursor control and text selection and editing based on gesture-based touch inputs received in a virtual keyboard display area | |
CN104756060B (zh) | 基于手势的光标控制 | |
CN106155506B (zh) | 一种控制方法及控制装置 | |
CN103593108A (zh) | 提供具有多任务功能的用户界面的方法和移动通信装置 | |
CN102819417B (zh) | 一种图片显示处理方法及装置 | |
KR960035352A (ko) | 컴퓨터 그래픽 시스템 및 그래픽 처리 엔진 동작 제어 방법 | |
CN103699312A (zh) | 一种多应用前台运行实现方法、装置及电子设备 | |
CN106919301A (zh) | 壁纸预览方法和系统以及壁纸更换方法和系统 | |
CN102890611A (zh) | 一种基于触摸式操作提供文件夹项目信息的方法及装置 | |
CN103440131B (zh) | 一种基于安卓系统的移动终端触摸屏视图布局调整方法 | |
CN103605464A (zh) | 一种桌面应用图标跨屏合并方法 | |
US9646009B2 (en) | Method and apparatus for generating a visual representation of object timelines in a multimedia user interface | |
JP2008269615A (ja) | 複数の表示画面領域に同時にマウスポインターを表示する方法及び装置 | |
CN103365444A (zh) | 一种终端设备上触摸屏的触控方法和终端设备 | |
US20060214933A1 (en) | Spline drawing in a computer-implemented graphics program | |
CN103513857B (zh) | 不规则窗口中的消息处理方法及装置 | |
CN104978135A (zh) | 一种图标显示方法、装置及移动终端 | |
CN111158840B (zh) | 图像轮播方法及装置 | |
CN103135912B (zh) | 一种生成操作对象的方法和电子设备 | |
CN104978104B (zh) | 一种信息处理方法、装置和电子设备 | |
US20170040000A1 (en) | System and method for adaptive and persistent media presentations | |
CN111638828A (zh) | 界面显示方法及装置 | |
CN104915102A (zh) | 图形界面的交互方法及装置 | |
JP3853517B2 (ja) | 拡張スクロールシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 516006 Guangdong province Huizhou City Zhongkai high tech Zone and five West Road No. 103 Applicant after: HUIZHOU DESAY SV AUTOMOTIVE CO., LTD. Address before: 516006 Guangdong province Huizhou City Zhongkai high tech Zone and five West Road No. 103 Applicant before: Huizhou Desay SV Auto. Electronics Co., Ltd. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |