androidcanvas縮放
Ⅰ android編程 怎麼讓畫面停住一段時間
canvas加Thread就可以實現,時鍾的轉動也是這樣實現的.canvas可以對圖片旋轉或縮放
Ⅱ android canvas的畫線和畫字的區別
原來一直以為canvas.drawText是根據給出的坐標做為左上角來畫的,今天才發現給出的坐標是左下角坐標。
canvas.drawText("Hello World!", 50, 110, paint);
canvas.drawLine(50, 110, 150, 110, paint);
注意觀察橫線的開始位置
Ⅲ Android繪圖之Canvas變換(6)
前面講解了Canvas的基本概念, Android繪圖之Canvas概念理解(5) ,
對Canvas的概念進行了分析,但是沒有說明和屏幕的關系,Canvas不等於屏幕,屏幕不會動的,我們也無法對屏幕進行(平移,縮放等)操作,只能對Canvas進行操作,所以對Canvas進行操作,屏幕不動,最終會導致看到的圖像不同。
下面開始講解Canvas的變幻操作:
包括:translate,rotate,scale,skew,clip,clipout,matrix
先從最簡單的平移開始:
對Canvas進行平移,
dx: x軸方向進行平移,正值向屏幕右側
dy:y軸方向進行平移,正值向屏幕下方
繪制兩個點查看原點位置。
原點顯然改變了,以後再繪制任何形狀都是以translate後的原點開始繪制。
參數說明
sx:橫向的縮放,默認為1,小數縮小,整數放大
sy:縱向的縮放,默認為1,小數縮小,整數放大
px,py,看源碼知道是先translate,執行sx,sy然後再translate反方向。
第二次translate的坐標為(-px sx,-px sy),最終的效果就是px,py是縮放後不動的點。
縮放後坐標減半。
如果想控制縮放後的位置,如何控制呢,這就需要第二個函數。
還可以控制其他位置,例如控制縮放後在中心。
rotate有兩個函數:
rotate(float degrees)
rotate(float degrees, float px, float py)
Degree:旋轉的角度,正值為順時針,負值為逆時針
Px,py:旋轉的中心,如果不指定旋轉中心默認為(0,0)點
指定旋轉中心為矩形中心
參數說明:
sx:畫布在x方向上傾斜相應的角度,sx傾斜角度的tan值,
sy:畫布在y軸方向上傾斜相應的角度,sy為傾斜角度的tan值,
根據矩形或者路徑裁剪畫布,畫布被切割之後,只有部分區域可用,其他區域無法繪制內容。
Clip函數切割的區域可用,clipOut未被切割的區域可用。(過時函數不再講解)
Matrix提供了一些方法來控制變換:
android繪圖之Paint(1)
android繪圖之Canvas基礎(2)
Android繪圖之Path(3)
Android繪圖之drawText繪制文本相關(4)
Android繪圖之Canvas概念理解(5)
Android繪圖之Canvas變換(6)
Android繪圖之Canvas狀態保存和恢復(7)
Android繪圖之PathEffect (8)
Android繪圖之LinearGradient線性漸變(9)
Android繪圖之SweepGradient(10)
Android繪圖之RadialGradient 放射漸變(11)
Android繪制之BitmapShader(12)
Android繪圖之ComposeShader,PorterDuff.mode及Xfermode(13)
Android繪圖之drawText,getTextBounds,measureText,FontMetrics,基線(14)
Android繪圖之貝塞爾曲線簡介(15)
Android繪圖之PathMeasure(16)
Android 動態修改漸變 GradientDrawable
Ⅳ android canvas的drawText方法 如何設置字體大小和格式。
Canvas相當於畫布,字體的大小格式在Paint上設置才正確, Paint 相當於畫筆。代碼如下,沒有具體參數:
Paint paint = new Paint();
paint.setTextSize(textSize);//設置字體大小
paint.setTypeface(typeface);//設置字體類型
canvas.drawText(text, x, y, paint);//使用畫筆paint
@Override
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 = "測試:ijkJQKA:1234";
paint.setColor(Color.CYAN);
canvas.drawRect(targetRect, paint);
paint.setColor(Color.RED);
FontMetricsInt fontMetrics = paint.getFontMetricsInt();
(4)androidcanvas縮放擴展閱讀:
Screen Space - Camera
此模式類似Screen Space - Overlay,但區別是此模式將Canvas放置於某個Camera前固定距離。此Camera負責渲染所有UI元素,則攝像機參數(Camera Settings)直接影響UI表現。
比如Camera是透視模式(Perspective),則UI元素會基於Field of View的值而扭曲變形。同樣的,若屏幕解析度變更,或者視覺平截體(CameraFrustrum)改變,則Canvas自動調整自身尺寸作自適應。
Ⅳ 您好,android里如何把圖片放大超過屏幕大小和拖動呢就像相冊里一樣。我試過很多辦法都不行。
是要編寫一個這樣的功能么,android提供的API裡面一般圖片都是Bitmap,可以通過Canvas.drawBItMap的方法在View進行圖片的繪制,在方法中需要進行傳入一個類型為Matrix的參數,設置Martrix的一些參數就可以進行圖片的放大的繪制,這只是顯示,也就是MVC中的View層,然後通過提供的一些觸摸函數的重寫並實現自己需要的一些功能,如拖動,實際上就是改變BitMap繪制的位置。關於觸摸的處理和圖片的繪制可以在網上進行一些教程的搜索,我就不羅列了,最終就是需要通過控制函數來改變圖片的繪制方式,這也許就是你所需要的功能。
Ⅵ Android Drawable,Bitmap,Canvas和Paint的區別
Bitmap - 稱作點陣圖
一般點陣圖的文件格式後綴為bmp,當然編碼器也有很多如RGB565、RGB888。作為一種逐像素的顯示對象執行效率高,但是缺點也很明顯存儲效率低。我們理解為一種存儲對象比較好。
Drawable - 作為Android平下通用的圖形對象
它可以裝載常用格式的圖像,比如GIF、PNG、JPG,當然也支持BMP,當然還提供一些高級的可視化對象,比如漸變、圖形等。
Canvas - 名為畫布
我們可以看作是一種處理過程,使用各種方法來管理Bitmap、GL或者Path路徑,同時它可以配合Matrix矩陣類給圖像做旋轉、縮放等操作,同時Canvas類還提供了裁剪、選取等操作。
Paint - 我們可以把它看做一個畫圖工具
比如畫筆、畫刷。他管理了每個畫圖工具的字體、顏色、樣式。