android 字型繪製,計算距離 筆記,android繪製

來源:互聯網
上載者:User

android 字型繪製,計算距離 筆記,android繪製

轉載請註明出處,如有錯誤,請指出

Android FontMetrics 在Paint類裡面定義,分別有5個屬性,想要理解這個屬性,來拿出筆,跟我畫,並且我們對照圖來理解其中屬性:

top:中的Ag最上面那頂綠、綠線~,對就是他,就是我們看到的top,從字型baseline以上,用來限制最大高度。baseline在哪裡呢?圖中那條藍色線即是。

ascent: baseline以上,那條紅線。

descent:baseline以下,那條綠線。

bottom:圖中木有畫出來。他在decent下面,也就是限制最低高度的。可以懂吧?~

leading:這個呢,根據我查的資料、和我個人的理解,leading是有倆個地方的。一個是現在圖中top - ascent的距離,也就是 頂部綠線到紅線的距離,另外一個是圖中未標註出來的,bottom-descent的距離,就是底部綠線一下的那一點。



我們通過
FontMetrics fontMetrics = new FontMetrics();
paint.getFontMetrics(fontMetrics);

方法擷取他。

這裡,我們再看幾個圖,以加深理解:




下面這個圖好複雜,算了,可以略過,就當備忘以做後用。。


下面,我要畫出如的字,該如何計算距離呢


首先第一行:“test測試test測試”

我們不用canvas的位移來繪製,

直接通過他的方法:drawText(string, float , float , paint)方法來繪製

drawText(string, float , float , paint)這個方法,繪製的字會在float x, float y上方。所以這裡的x,y即理解為基準位置。

在繪製第一行時候我們只要計算出baseline距離,直接繪製即可。


第二行:“再來一行” 直接選用,那就是他的FontMetrics.height即可。

部分有參考意義的測試代碼:(有很多可以修改的地方)

final float marginTop = 1;final float metricsHeight = metrics.bottom - metrics.top;final float leading = metrics.leading;final float baseline = metrics.leading - metrics.top;float temp1 = marginTop + baseline; float temp2 = metricsHeight + leading;for (int i = 0; i < lineCount; i++) {canvas.drawText(strs[i], rectF.centerX(), ,<span style="font-family: Arial, Helvetica, sans-serif;">temp1 + i * temp2</span><span style="font-family: Arial, Helvetica, sans-serif;">, paint);</span>}

最後,,csdn真的bug有點多啊,貼圖貼不上,代碼粘貼進來複製修改就壞了。。。求推薦一個靠譜的做筆記的網站。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.