1. 程式人生 > >HTML5 canvas 文字自動換行

HTML5 canvas 文字自動換行

html5 的canvas 提供了多樣性的功能。

在canvas中提供了將文字作為圖片輸出到畫布上的功能,通常用到的函式主要有canvas.drawText 和canvas.fillText兩個。

以canvas.fillText()函式為例,在canvas.fillText("information" , width , height , maxwidth )中包含四個引數,"information"表示文字輸出的內容,width和height分別表示你想要輸出的文字起始字元左上角的位置,而maxwidth則表示了該字串的最大寬度,例如將maxwidth設為100,則無論字串有多長,都將限制在100畫素寬度內。

下面程式碼則寫了一個可以將長字串自動換行的程式。程式碼如下:

function draw_long_text(longtext,cxt,begin_width,begin_height)
{ 
  var linelenght = 20;
  var text = "";
  var count = 0;
  var begin_width = begin_width;
  var begin_height = begin_height;
  var stringLenght = longtext.length;
  var newtext = longtext.split("");
  var context = cxt;
  context.clearRect(0,0, 600,300);
  context.textAlign = 'left';
  
  for(i = 0; i <= stringLenght ; i++)
  {
    
    if(count == 20)
	{
	context.fillText(text,begin_width,begin_height);
	begin_height = begin_height + 25;
	text = "";
	count = 0;
	}
	if(i == stringLenght)
	{
	context.fillText(text,begin_width,begin_height);
	}
    var text = text + newtext[0];
	count ++;
	newtext.shift();	
  }
}



其中cxt為獲取到的canvas的例項。將上述程式碼儲存為js檔案,然後在html中引用,就可以實現字元自動換行了。

相關推薦

HTML5 canvas 文字自動

html5 的canvas 提供了多樣性的功能。 在canvas中提供了將文字作為圖片輸出到畫布上的功能,通常用到的函式主要有canvas.drawText 和canvas.fillText兩個。 以canvas.fillText()函式為例,在canvas.fillTex

canvas文字自動、圓角矩形畫法、生成圖片手機長按保存

UNC get 函數 odata -i 圓角 ont eight nehe canvas的文字自動換行函數封裝 // str:要繪制的字符串 // canvas:canvas對象 // initX:繪制字符

html5-canvas的繪製文字自動

  本文介紹怎麼解決canvas繪圖過程中,drawText的換行問題,先看一個大家平時在canvas繪製文字都會遇到的問題:      一個150*100的canvas畫布,加個邊框明顯邊界 <canvas id="canvas" styl

canvas的繪製文字自動 最簡單實現

先看下效果圖: 程式碼如下,後面解釋(小程式為例) content = "canvas的繪製文字自動換行 By Frank"; const ctx = wx.createCanvasContext('canvas'); ctx.setFontSize(1

cocos2d-html5 文字自動

提醒:本文最後更新於 2025 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 某次使用 cocos2d-html5 時發現,通過 cc.LabelTTF 顯示的文字即使寬度超過了預設值,也不會自動換行。上網搜了下,很多人都遇到了同樣的問題。 之前用 cocos2d-x 的 CCLabelTTF

JSP中table表格中的文字自動

style="display:inline-block;width:300px;word-wrap:break-word;white-space:normal" <span></span> style樣式+span標籤 <td align="left"

對於span標籤內文字自動的屬性white-space

<span style="white-space: pre-wrap;"> 測試資料 </span> white-space -- 通過HTML文件的原始碼的排版方式控制頁面顯示文字的排版方式  取值: normal | pre | nowrap |

C++使用Uniscribe進行文字自動的計算和渲染

Uniscribe是Windows 2000以來就存在於WinAPI中的一個庫。這個庫能夠提供給我們關於字串渲染的很多資訊,譬如說哪裡可以換行啦,渲染的時候字元的順序應該是什麼樣子啦,還有每一個字元的大小什麼的。關於Uniscribe的資料可以在http://msdn.microsoft.com/

mxGraph圖形文字自動

兩種方式。 1、直接設定預設樣式 style[mxConstants.STYLE_WHITE_SPACE]='wrap' 2、重寫mxCellRenderer.prototype.createLabel方法,將其中state.text進行更改,原來的程式碼如下

css控制文字自動

自動換行問題,正常字元的換行是比較合理的,而連續的數字和英文字元常常將容器撐大,挺讓人頭疼,下面介紹的是CSS如何實現換行的方法對於div,p等塊級元素正常文字的換行(亞洲文字和非亞洲文字)元素擁有預設的white-space:normal,當定義的寬度之後自動換行html正

WinForm系列——DataGridView單元格文字自動

DataGridView是.NET開發中常用的控制元件,在開發中發現大文字資料顯示時無法在介面上完全顯示,以下是我的解決方法。 (1)首先要保證單元格的為Text型別 (2)在程式中加入以下的程式碼片段 //設定資料來源 this.dataGridView1.

C#: WinForm系列——DataGridView單元格文字自動

DataGridView是.NET開發中常用的控制元件,在開發中發現大文字資料顯示時無法在介面上完全顯示,以下是我的解決方法。 (1)首先要保證單元格的為Text型別 (2)在程式中加入以下的程式碼片段 String str1 = "mac:192.168.0.121"; String str

iOS開發之UIlabel多文字自動自動

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Uniscribe文字自動

我們獲得了每個字形的寬度陣列piAdvances,以及這個RUN所佔用的總寬度abc。 piVdvances對應於每個字元,它取得了每個字形所佔用寬度。 如果我們以行為單位來繪製文字,我們可以以一個迴圈來取得每個RUN的寬度資訊,並一直相加,假設我們己取得了一些run的寬度和,假設這個寬度和為Li

[轉]C#控制元件——DataGridView單元格文字自動

DataGridView是.NET開發中常用的控制元件,在開發中發現大文字資料顯示時無法在介面上完全顯示,以下是我的解決方法。 (1)首先要保證單元格的為Text型別 (2)在程式中加入以下的程式碼片段 //設定資料來源      this.dataGridView1.DataSource = dt;  

CSS解決文字自動

1.單行文字溢位隱藏:p{ text-overflow: ellipsis;//必須 white-space: nowrap;//必須 overflow: hidden;//必須 }2.多行文字溢位隱藏:  (只適用移動端和 chrome)p{word-break: brea

WPF控制元件TextBlock中文字自動

在很多的WPF專案中,往往為了追求介面的美觀,需要控制控制元件中文字的換行顯示,現對TextBlock控制元件換行的實現方式進行總結,希望大家多多拍磚!!! 1.使用轉義字元 在XAML檔案中,實現方式如下: <TextBlock x:Name="textBlock

CDC:DrawText多顯示文字的問題(文字自動)

引數:     hdc:裝置環境控制代碼。     lpString:指向將被寫入的字串的指標,如果引數nCount是C1,則字串必須是以\0結束的。     如果uFormat包含DT_MODIFYSTRING,則函式可為此字串增加4個字元,存放字串的緩衝區必須足夠大,能容納附加的字元。     nCoun

IE7瀏覽器float:left li標籤文字自動

Li標籤Float:left在做網頁側欄的一些tags的時候,是一種很好的選擇。不過在中文字元上,可能會出現一點小問題,先看一張IE7和IE8下的效果圖吧:   看起來的確狠蛋疼,在標準瀏覽器中是不會出現上圖IE7的效果的。先看下程式碼結構 <style>

iReport文字自動設定

1、  選中要自動換行的text框,勾選中屬性面板中的“StretchWith Overflow”屬性 2、  選中該欄位所在行的所有欄位(包括行頭),在“屬性”面板中將“Stretch Type”設定為“Relative to Tallest Object”