DrawText的使用

DrawText函数简介

这个函数的作用非常easy,就是在指定的区域内输出格式化的文本。

函数原型:

int DrawText(

HDC hDC,

LPCTSTR lpString,

int nCount,

LPRECT lpRect,

UNIT uFormat

);

hDC是设备上下文句柄。lpString指向将要绘制的UNICODE文本。nCount是要输出的字符数,假设nCount = -1,则Windows自己主动计算字符数,只是此时lpString所指向的必须是以NULL结尾的字符串。lpRect指向rect结构体,指定了文本格式化的矩形区域。uFormat是格式化标记,也是这里面稍显复杂的一个參数。

以下是几个经常使用的格式化标记:

DT_CALCRECT:这个參数比較重要,能够使DrawText函数计算出输出文本的尺寸。假设输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行。假设输出文本仅仅有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述不论什么一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。

DT_CENTER:指定文本水平居中显示。

DT_VCENTER:指定文本垂直居中显示。该标记仅仅在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用。

DT_SINGLELINE:单行显示文本,回车和换行符都不断行。

② DrawText函数使用举例

//Get the height and length of the string.

DrawText(hdc,szHello,-1,&rect, DT_CALCRECT | DT_CENTER | DT_SINGLELINE);

// Draw the text

DrawText(hdc,szHello,-1,&rectCli,DT_CENTER | DT_SINGLELINE);

③ 常常与DrawText结合使用的几个函数

(1) SetTextColor 设置文本前景色

COLORREF SetTextColor(

HDC hdc,

COLORREF crColor

);

(2) SetBkColor 设置文本背景色

COLORREF SetBkColor(

HDC hdc,

COLORREF crColor

);

(3) SetBkMode 设备背景色模式为透明与不透明

int SetBkMode(

HDC hdc,

int iBkMode

);

时间: 2024-10-07 05:29:57

DrawText的使用的相关文章

android开发 drawtext的开始坐标位置

我们canvas绘制文字的遇到一个不知道drawtext(str,x,y,paint)  中的x.y坐标值怎么定义,,如果设为(0,0)的话文字就不会出来了.因此查找到一下资料: 问:canvas.drawText("3", x, y, paint);  x和y是指画得时候数字3中心的坐标吗?还是左上角的坐标?答:x默认是‘3’这个字符的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符basel

DrawText

DrawText 函数功能:该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐.折行等). 函数原型:int DrawText(HDC hdc, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat): 参数: hdc:设备环境句柄. lpString:指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以\0结束的. 如果uFormat包含DT_MODIFYSTRING,则函数可

Android Canvas drawText实现中文垂直居中

public void onDraw (Canvas canvas) { Rect targetRect = new Rect(50, 50, 1000, 200); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setStrokeWidth(3); paint.setTextSize(80); String testString = "Text:中文asdfghjkl"; paint.setColor(Color.CYAN

android canvas drawText()文字居中

近期也是在学习自己定义控件,曾经仅仅自己随便玩了下,一直认为比較难,正好如今工作轻松,每天闲着就看看书看看帖子学习自己定义控件,你还别说自己定义控件学起来还是蛮有趣的!! 这里也跟大家分享下我关于drawText()文字居中的方法. 先附上drawText()的方法说明 说实话当时看了这个,我也没明确这个x,y坐标究竟表达的啥意思,还一直以为是绘制文字中心的坐标,后来发现这个理解是错误的 要想理解这个首先看张图 像图上这样安卓的文字绘制是相对于基线绘制的,也就是图中的红线,而top+bottom

android学习16#--学习canvas.drawText

本来这篇文章是要写写我在设计高级跑马灯程序的心得的,但是编写过程中花了近一天多的时间搞明白canvas.drawText中的第三个参数[float y]代表的真实含义.学习本文应该能帮助大家掌握FontMetrics类和Rect类成员变量值具体含义. drawText引出问题 先来看看api中是如何定义drawText的参数. /** * Draw the text, with origin at (x,y), using the specified paint. The * origin is

android Graphics( 五):drawText()详解

前言:但行好事,莫问前程.只需努力每一天. 一.概述 1.四线格与基线 小时候,我们在刚开始学习写字母时,用的本子是四线格的,我们必须把字母按照规则写在四线格内.比如: 那么问题来了,在canvas在利用drawText绘制文字时,也是有规则的,这个规则就是基线!我们先来看一下什么是基线: 可见基线就是四线格中的第三条线!也就是说,只要基线的位置定了,那文字的位置必然是定了的! 2.canvas.drawText() (1).canvas.drawText()与基线 下面我们来重新看看canva

关于Canvas.drawText中xy位置问题

问:canvas.drawText("3", x, y, paint);  x和y是指画得时候数字3中心的坐标吗?还是左上角的坐标?答:x默认是'3'这个字符的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上的位置.public void drawText (String text, float x, float y, Paint paint)Since: API Lev

delphi DrawText 的用法

DrawText(hDC: HDC; {设备句柄}lpString: PChar; {文本}nCount: Integer; {要绘制的字符个数; -1 表示全部}var lpRect: TRect; {矩形结构}uFormat: UINT {选项}): Integer; {返回文本高度} //uFormat 参数的可选值:DT_TOP = 0; {顶对齐, 须 or DT_SINGLELINE}DT_LEFT = 0; {左对齐}DT_CENTER = 1; {水平居中}DT_RIGHT =

CDC::DrawText详解

函数原型 int DrawText( HDC hDC,          // 设备描述表句柄 LPCTSTR lpString, // 将要绘制的字符串 int nCount,       // 字符串的长度 LPRECT lpRect,    // 指向矩形结构RECT的指针 UINT uFormat      // 正文的绘制选项 ); 参数 hdc: [输入]设备环境句柄. lpString: [输入]指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以/0结束的.