国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

canvas繪制文本內(nèi)容自動換行

MageekChiu / 1800人閱讀

摘要:原型要求要求制作一個邀請卡頁面,其中標(biāo)題字?jǐn)?shù)是動態(tài)的,最多可顯示行,如果超出行則第行內(nèi)容結(jié)尾添加省略號。根據(jù)產(chǎn)品妹子的性格,四行這個設(shè)置到時很大機會改,所以這里一定不能寫死,結(jié)果前幾天真的要求改成了最多可顯示行,其他照舊。

原型要求:

要求制作一個邀請卡頁面,其中標(biāo)題字?jǐn)?shù)是動態(tài)的,最多可顯示2行,如果超出2行則第2行內(nèi)容結(jié)尾添加省略號。根據(jù)產(chǎn)品妹子的性格,四行這個設(shè)置到時很大機會改,所以這里一定不能寫死,結(jié)果前幾天真的要求改成了最多可顯示4行 ,其他照舊。產(chǎn)品妹子too young :)!

廢話不說,下面貼代碼,獻(xiàn)丑了!上代碼之前先看一下需要傳的參數(shù)!!

圖文并茂的參數(shù)說明,原諒我捉急的PS技術(shù)和設(shè)計

ctx: 畫布的上下文環(huán)境

content: 需要繪制的文本內(nèi)容

drawX: 繪制文本的x坐標(biāo)

drawY: 繪制文本的y坐標(biāo)

lineHeight:文本之間的行高

lineMaxWidth:每行文本的最大寬度

lineNum:最多繪制的行數(shù)

// 文字自動換行
function textPrewrap(ctx, content, drawX, drawY, lineHeight, lineMaxWidth, lineNum) {
    var drawTxt = ""; // 當(dāng)前繪制的內(nèi)容
    var drawLine = 1; // 第幾行開始繪制
    var drawIndex = 0; // 當(dāng)前繪制內(nèi)容的索引

    // 判斷內(nèi)容是否可以一行繪制完畢
    if(ctx.measureText(content).width <= lineMaxWidth) {
        ctx.fillText(content.substring(drawIndex, i), drawX, drawY);
    } else {
        for (var i = 0; i < content.length; i++) {
                drawTxt += content[i];
                if (ctx.measureText(drawTxt).width >= lineMaxWidth) {
                    if (drawLine >= lineNum) {
                        ctx.fillText(content.substring(drawIndex, i) + "..", drawX, drawY);
                        break;
                    } else {
                        ctx.fillText(content.substring(drawIndex, i + 1), drawX, drawY);
                        drawIndex = i + 1;
                        drawLine += 1;
                        drawY += lineHeight;
                        drawTxt = "";
                    }
                } else {
                    // 內(nèi)容繪制完畢,但是剩下的內(nèi)容寬度不到lineMaxWidth
                    if (i === content.length - 1) {
                        ctx.fillText(content.substring(drawIndex), drawX, drawY);
                    }
                }
            }
    }
}
意外發(fā)現(xiàn)

在繪制文字的過程中發(fā)現(xiàn),繪制文字的y坐標(biāo)是不是以文字上方做標(biāo)準(zhǔn),一圖勝多言,上圖!

瀏覽器環(huán)境: chrome 71.0.3578.98(正式版本)(64 位)

字體大小為40px

繪制的y坐標(biāo)為0時,可以看到文本再左上角只漏了一點點出來

繪制的y坐標(biāo)為40時,可以看到文本可以完全顯示

后記

這是一個比較冷門的代碼效果,但是也希望可以幫到有需要的朋友
如有幫助的請輕輕點下一個贊表示鼓勵!謝謝 :)
如果看到這里首先很感謝花費您一些寶貴的時間看到這里,如有錯誤的地方希望各位大佬指出錯誤,謝謝:)

關(guān)閉手機鬧鐘,睡了!明天起來看 雷馬大戰(zhàn) !哦吼

2019 coding and basketball!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/100970.html

相關(guān)文章

  • H5 canvas生成圖片并上傳文件轉(zhuǎn)成PDF下載canvas文字排版

    摘要:將預(yù)覽的圖片上傳,后端生成,在管理系統(tǒng)中下載。技術(shù)要點文字排版設(shè)置指定背景顏色引入外部字體繪制文字圖片將生成的圖片轉(zhuǎn)成上傳這里根據(jù)后端協(xié)商,此處后端要求將圖片生成,并點擊批量下載實現(xiàn)步驟文字排版在一般容器中,如果要實現(xiàn)文字的排版很容易。 最近遇到一個業(yè)務(wù)需求,在小程序端定制預(yù)覽功能,并在預(yù)覽的圖片中使用指定的外部字體。將預(yù)覽的圖片上傳OSS,后端生成PDF,在管理系統(tǒng)中下載。但是………...

    canopus4u 評論0 收藏0
  • vue生成canvas海報圖

    vue-canvas-poster vue 組件-簡單屬性畫 Canvas 圖github 概述 一個通過 css 屬性畫 canvas 圖片的輕量級的 vue 組件(A lightweight vue components use canvas draw image by css properties.) 具有如下特性: 繪制文本(換行、超出內(nèi)容省略號、中劃線、下劃線、文本加粗) 繪制圖片(圓...

    ghnor 評論0 收藏0
  • 通過li-canvas輕松實現(xiàn)單圖、多圖、圓角圖繪制,單行文字、多行文字、豎向文字繪制自動換行,保

    摘要:新增的是個強大的功能,估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進(jìn)行封裝的話,代碼會很亂,所以對常用的畫圖繪制文字保存功能進(jìn)行了封裝,目前還比較滿意,能夠快速完成繪圖任務(wù),從容應(yīng)對需求變更,只需進(jìn)行簡單配置即可。 Html5新增的canvas是個強大的功能, 估計大家平時都會用到,只是頻率不高,偶爾用它合成圖片,但是如果不進(jìn)行封裝的話,代碼會很亂,所以對canva...

    source 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<