CN104731445A - 一种长文本显示方法 - Google Patents

一种长文本显示方法 Download PDF

Info

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
Application number
CN201310720949.4A
Other languages
English (en)
Other versions
CN104731445B (zh
Inventor
陈秋龙
程时宋
黄东豹
怀保胜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huizhou Desay SV Automotive Co Ltd
Original Assignee
Huizhou Desay SV Automotive Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huizhou Desay SV Automotive Co Ltd filed Critical Huizhou Desay SV Automotive Co Ltd
Priority to CN201310720949.4A priority Critical patent/CN104731445B/zh
Publication of CN104731445A publication Critical patent/CN104731445A/zh
Application granted granted Critical
Publication of CN104731445B publication Critical patent/CN104731445B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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。
CN201310720949.4A 2013-12-24 2013-12-24 一种长文本显示方法 Active CN104731445B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 鸿富锦精密工业(深圳)有限公司 文本框及文本显示方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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