`
guowee
  • 浏览: 176748 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

DrawText 使用

 
阅读更多

(1)DT_WORDBREAK

只能截断单词。例如如果输入一连串英文字符,那么它会当做一个单词来处理,而不会自动换行。而对于中文字符则可以。如果要对所有字符都可以像 Edit控件中那样自动换行,那么可以使用DT_WORDBREAK | DT_EDITCONTROL

 

DT_EDITCONTROL Duplicates the text-displaying characteristics of a multiline edit control. Specifically, the average character width is calculated in the same manner as for an edit control, and the function does not display a partially visible last line.

(2)DT_CALRECT的使用

对于一段text,要计算他的显示大小,那么可以使用DT_CALRECT标志。其中的rect参数属于IN/OUT类型。输出时,左上角坐标不 变,右下角坐标改变。函数返回值是文本的高度。当然,它要与不同格式标志一起使用得到的结果是不一样的。例如,DT_CALRECT | DT_SINGLELINE 时,它只扩展传入rect的width,而在多行显示的时候,即DT_WORDBREAK | DT_WORDBREAK | DT_EDITCONTROL,仅仅扩展height,width不变。

DT_CALCRECT    Determines the width and height of the rectangle. If there are multiple lines of text, DrawText will use the width of the rectangle pointed to by lpRect and extend the base of the rectangle to bound the last line of text. If there is only one line of text, DrawText will modify the right side of the rectangle so that it bounds the last character in the line. In either case, DrawText returns the height of the formatted text, but does not draw the text.

(3)DT_CENTER 与 DT_VCENTER

DT_VCENTER只对单行文字的竖直居中有用。DT_CENTER 对单行和多行文字都有用,但只能水平居中。

(4)多行文字的竖直居中

思路:根据显示中心,重新计算要求的显示范围

具体方法:

// ======================================
// = 把str内容显示到客户区的中间,但是每行宽度限定为200,让其自动换行

CRect clientRect;
   GetClientRect(clientRect); // 获得客户区范围

 

CRect rect;
   rect.left = rect.top = 0;
   rect.right = 200;
   rect.bottom = clientRect.bottom;  // 限定宽度


   CString str = "我是来自非洲的姑娘。心中向往神秘的东方,背起行囊寻找梦想,那是龙的故乡
这里的人纯朴善良,淡淡微笑挂脸庞";


   CRect temp = rect;
   int height = pDC->DrawText(str,temp,DT_CENTER | DT_WORDBREAK | DT_CALCRECT | DT_EDITCONTROL); // 获得文本高度
 
   rect.DeflateRect(0,(rect.Height() - height) / 2); // 改变rect


   pDC->DrawText(str,rect, DT_CENTER | DT_EDITCONTROL | DT_WORDBREAK);

 

分享到:
评论

相关推荐

    No such filter:drawtext MacOS上包含drawtext的ffmpeg

    No such filter: 'drawtext' MacOs:node+ffmpeg+web 利用node+ffmpeg 在浏览器上播放rtsp流,所需要的ffmpeg;一般官网上下载的和默认自己编译的都不包含 drawtext filter;该工具包包含,可直接使用 macOs可直接...

    解决DrawText中文字与字母之间自动换行

    在探讨“解决DrawText中文字与字母之间自动换行”的问题时,我们首先需要理解DrawText函数的基本概念及其在Windows编程中的应用。DrawText是一个Windows API函数,用于将文本绘制到指定的矩形区域,同时提供了多种...

    DrawText Api code

    本篇文章将深入探讨如何使用`DrawText` API代码在PictureBox控件中绘制文本,以及相关的编程技巧和注意事项。 首先,`DrawText`函数是Windows API中的一个函数,位于`User32.dll`库中。它的基本语法如下: ```c++ ...

    CDC::DrawTextCDC::DrawText

    标题中的"CDC::DrawText"是指在Microsoft Visual C++ (VC++)编程环境中,使用GDI (Graphics Device Interface) 的CDC类中的DrawText成员函数来绘制文本。这个函数允许程序员在设备上下文中绘制格式化的文本,提供了...

    Android DrawText字符串的绘制

    在 Android 平台上,DrawText 字符串的绘制是通过使用 Canvas 和 Paint 对象来实现的。 在上面的代码中,我们可以看到,TextUtil 类是用于绘制字符串的工具类。该类中包含了多个变量,用于存储字符串的绘制信息,...

    利用drawtext给视频加字幕

    本文将深入探讨如何使用`ffmpeg`工具,结合`drawtext`过滤器来为视频添加文本字幕,同时忽略音频部分,专注于单一流视频的处理。 `ffmpeg`是一个强大的跨平台命令行工具,用于处理各种音视频格式的转换、编码、解码...

    ffmpeg基本库+fdkaac+freetype扩展库安装包

    而fribidi则用于处理从左到右和从右到左的多语言文字排版,可能在drawtext使用中提供支持。 在安装这些库时,一般步骤如下: 1. 解压所有文件。 2. 针对每个源码包,进入目录并运行`./configure --prefix=/path/to...

    MFC-TextOut.rar_DrawText_DrawText Visual C++_MFC

    在MFC环境中,通常会创建一个`CDC`对象,然后使用这个对象来调用`TextOut`或`DrawText`。例如,在响应WM_PAINT消息时,可以这样使用: ```cpp void CMyView::OnPaint() { CPaintDC dc(this); // 创建一个设备上...

    源码

    在Java代码中,你可以使用Canvas对象的`drawText()`方法来绘制文本。该方法接受几个参数: ```java public void drawText(String text, float x, float y, Paint paint) ``` - `text`:要绘制的字符串。 - `x`:...

    Directx8_DrawText

    这篇内容将深入探讨如何使用DirectX 8的`DrawText`函数来实现2D文字的绘制。 首先,我们要理解DirectX 8的基本架构。它主要由以下几个部分组成:Direct3D(3D图形)、DirectDraw(2D图形)、DirectInput(输入设备...

    在VC中用DrawText函数输出html内容

    然后,根据这些标签来调整DrawText的参数,比如使用CreateFont创建新的字体对象来改变颜色、粗细或倾斜度。 例如,如果遇到`<b>`标签,我们可以在绘制这部分文本时设置 Bold 属性;遇到`<font color="red">`,则...

    drawText:在画布上编辑文本

    至于“#Limitations已使用ubuntu chrome测试”,这表明`drawText` 库已经在Ubuntu操作系统下的Chrome浏览器中进行了测试,这意味着它可能主要针对现代Web浏览器优化,特别是那些支持HTML5 Canvas的浏览器。...

    DrawTextWithBackgroundColor.zip

    使用`DrawText`,开发者可以精确控制文本在窗口或对话框中的显示位置和样式。 在`DrawText`函数中,我们需要提供一个设备上下文(HDC,Handle to Device Context)作为参数,这是Windows图形设备接口(GDI)中用于...

    MFC的DrawTextDemo

    了解和熟练掌握`DrawText`和`TabbedTextOut`的使用,不仅可以帮助你更好地控制程序界面的显示,还能提升代码的可读性和维护性。在实际应用中,可以根据需求结合这两个函数的特性,创建出满足业务需求的定制化文本...

    掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。通过对卡拉OK程序的编写,讲解定时器的使用和DrawText函数的巧妙运用。讲解如何使用CDC的裁减功能。

    同时,我们还将通过实例——卡拉OK程序,学习如何设置定时器和使用DrawText函数,最后介绍CDC的裁减功能。 首先,让我们深入理解CDC的文字处理。CDC提供了丰富的函数用于绘制文本,如TextOut和ExtTextOut,它们可以...

    Android Canvas的drawText()与文字居中方案详解

    在Android中,我们可以使用`setTextAlign()`方法来改变文字的对齐方式,包括左对齐(`Paint.Align.LEFT`)、居中对齐(`Paint.Align.CENTER`)和右对齐(`Paint.Align.RIGHT`)。不同的对齐方式会影响`x`参数的实际...

    VC6_dialog.rar_DrawText

    掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。通过对卡拉OK程序的编写,讲解定时器的使用和DrawText函数的巧妙运用。讲解如何使用CDC的裁减功能。

    VC++利用DrawText在窗体上输出文本

    VC++在窗体上输出文本的实例,主要是利用DrawText方法来实现文字输出,为了更全面一些,实例中不但输出了英文字符,还输出了中文,如果您对DrawText的使用方法不熟悉,可下载本源码参考。 运行环境:Windows/Visual...

    graphics 画文字 (C# VS2008 ) DrawText

    graphics 画文字 C# VS2008 DrawText

    ffmpeg.rar

    本资源为博主自己编译的,具有drawtext功能的FFmpeg。里面包含的ffmpeg.exe和dll,均具有drawtext功能。功能测试已通过。可在32位和64位系统运行。为根据博文《执行FFmpeg命令时报错:No such filter: 'drawtext'》...

Global site tag (gtag.js) - Google Analytics