drawroundrect java_Canvas中drawRoundRect()方法介绍
畫布Canvas的一個方法,繪制圓角矩形
逛CSDN的時候,無意看到之前關注的一個博主,出了一本書《Android自定義控件》,以前學自定義控件的時候,就是看他的文章的,這次出書了,再加上當當做活動,就買了一本,支持一下感謝他之前寫的文章。
周末翻了一下,看到Canvas章節的時候,不太好理解drawRoundRect(),繪制圓角矩陣的方法,碼一下代碼實踐出真知。為了更明顯看到坐標位置,用Sketch繪制一下,果然比自帶的畫圖工具好用(逃)
基本語法
public?void?drawRoundRect(RectF?rect,?float?rx,?float?ry,?Paint?paint)
功能:該方法用于在畫布上繪制圓角矩形,通過指定RectF對象以及圓角半徑來實現。
參數說明
float rx:生成圓角的橢圓的X軸半徑
float ry:生成圓角的橢圓的Y軸半徑
圓心位置
這個方法中,只需要設置圓角的X軸半徑和Y軸半徑,那圓心呢?
經過測試,發現圓心是動態變化的,看接下來代碼的分析
圓角半徑小于矩形寬的一半
override?fun?onDraw(canvas:?Canvas)?{
super.onDraw(canvas)
mPaint.color?=?Color.GRAY
mPaint.style?=?Paint.Style.STROKE
mPaint.strokeWidth?=?5f
//?繪制一個矩形作為背景,可以進行觀察
val?rect?=?RectF(0f,?0f,?800f,?600f)
canvas.drawRect(rect,?mPaint)
//?繪制圓角,半徑小于矩形寬的一半
mPaint.color?=?Color.BLACK
//?發現,繪制后,圓角弧度與
canvas.drawRoundRect(rect,?200f,?200f,?mPaint)
canvas.drawCircle(200f,?200f,?200f,?mPaint)
}
從圖片的圓角矩陣與圓重疊的部分,就可以看到弧度是怎樣繪制出來的
** 圓角半徑等于矩形寬的一半**
override?fun?onDraw(canvas:?Canvas)?{
super.onDraw(canvas)
mPaint.color?=?Color.GRAY
mPaint.style?=?Paint.Style.STROKE
mPaint.strokeWidth?=?5f
//?繪制一個矩形作為背景,可以進行觀察
val?rect?=?RectF(0f,?0f,?800f,?600f)
canvas.drawRect(rect,?mPaint)
//?繪制圓角,半徑小于矩形寬的一半
mPaint.color?=?Color.RED
//?發現,繪制后,圓角弧度與
canvas.drawRoundRect(rect,?300f,?300f,?mPaint)
canvas.drawCircle(300f,?300f,?300f,?mPaint)
}
圓角半徑大于矩形寬的一半
override?fun?onDraw(canvas:?Canvas)?{
super.onDraw(canvas)
mPaint.color?=?Color.GRAY
mPaint.style?=?Paint.Style.STROKE
mPaint.strokeWidth?=?5f
//?繪制一個矩形作為背景,可以進行觀察
val?rect?=?RectF(0f,?0f,?800f,?600f)
canvas.drawRect(rect,?mPaint)
//?繪制圓角,半徑小于矩形寬的一半
mPaint.color?=?Color.BLUE
canvas.drawRoundRect(rect,?500f,?500f,?mPaint)
//?弧度與半徑300的圓重疊了
canvas.drawCircle(300f,?300f,?300f,?mPaint)
}
出乎意料,居然保持與等于矩形寬的一半一致,看來,超過的話,就保持一致了。
文章沒啥技術含量,純屬一個驗證,既然畫圖了,就整理一下發表出來,說不定其他人也有這樣的疑惑!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的drawroundrect java_Canvas中drawRoundRect()方法介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看文件Linux命令(查看linux文
- 下一篇: java schema名_关于Schem