導航:首頁 > 操作系統 > androidcanvas圓角矩形

androidcanvas圓角矩形

發布時間:2022-06-13 05:23:37

A. android:如下關於繪制圓角矩形邊框問題,怎麼解決

paint.setAntiAlias(true);

嘗試在畫筆上設置抗鋸齒

B. android 怎麼畫一個圓弧的正方形

先來介紹一下畫幾何圖形要用到的,畫布(Canvas)、畫筆(Paint)。 1. 畫一個圓使用的是drawCircle:canvas.drawCircle(cx, cy, radius, paint);x、y代表坐標、radius是半徑、paint是畫筆,就是畫圖的顏色; 2. 在畫圖的時候還要有注意,你所畫的矩。可以看看安卓巴士的教程:http://www.apkbus.com/thread-465690-1-1.html

C. 用canvas畫只有一個角是圓角的矩形,能畫出來么

我知道兩種方法,一種是利用路徑查找器將一個矩形和一個圓角矩形相交的地方剪出來。 還有一種方法是先畫一個圓角矩形,利用轉換錨點工具將三個角轉換成直角的在利用直接選擇工具拽垂直

D. android繪制圓角矩形為什麼圓角邊粗了

用shapedrawable畫一個圓角矩形作為按鈕的background,但是圓角的地方總是有點粗,和直接用xml做出來的背景不一樣
float[]
outerR = new float[] { 20f, 20f, 20f, 20f, 0, 0, 0, 0 };
Shape shape = new
RoundRectShape(outerR, null, null);
image.setBackgroundDrawable(new
CustomShapeDrawable(shape,0xffea0000));

class CustomShapeDrawable extends
ShapeDrawable {
int color ;
public CustomShapeDrawable(Shape s,int
color) {
super(s);
this.color =
color;
}
@Override
protected void onDraw(Shape shape, Canvas
canvas, Paint paint) {

paint.setStrokeJoin(Join.ROUND);

paint.setDither(true);
paint.setAntiAlias(true);

paint.setStyle(Style.STROKE);
paint.setColor(0xffea0000);

paint.setStrokeWidth(4f);
shape.draw(canvas, paint);

}
}
把paint.setStrokeJoin這行去掉再試試

E. android怎麼移動canvas

我們可以把這個Canvas理解成系統提供給我們的一塊內存區域(但實際上它只是一套畫圖的API,真正的內存是下面的Bitmap),而且它還提供了一整套對這個內存區域進行操作的方法,所有的這些操作都是畫圖API。也就是說在這種方式下我們已經能一筆一劃或者使用

Graphic來畫我們所需要的東西了,要畫什麼要顯示什麼都由我們自己控制。
這種方式根據環境還分為兩種:一種就是使用普通View的canvas畫圖,還有一種就是使用專門的SurfaceView的canvas來畫圖。兩種的主要是區別就是可以在SurfaceView中定義一個專門的線程來完成畫圖工作,應用程序不需要等待View的刷圖,提高性能。前面一種適合處理量比較小,幀率比較小的動畫,比如說象棋游戲之類的;而後一種主要用在游戲,高品質動畫方面的畫圖。

Paint 代表了Canvas上的畫筆、畫刷、顏料等等;
Paint類常用方法:
setARGB(int a, int r, int g, int b) // 設置 Paint對象顏色,參數一為alpha透明值
setAlpha(int a) // 設置alpha不透明度,范圍為0~255
setAntiAlias(boolean aa) // 是否抗鋸齒
setColor(int color) // 設置顏色,這里Android內部定義的有Color類包含了一些常見顏色定義
setTextScaleX(float scaleX) // 設置文本縮放倍數,1.0f為原始
setTextSize(float textSize) // 設置字體大小
setUnderlineText(booleanunderlineText) // 設置下劃線

// 1、將會以顏色ARBG填充整個控制項的Canvas背景
//mCanvas.drawARGB(122, 10, 159, 163) ;
// 2、將會以顏色ARBG填充整個控制項的Canvas背景
//mCanvas.drawColor(Color.BLUE) ;
// 3、繪制顏色,但是要制定一個mode
//mCanvas.drawColor(Color.BLUE, Mode.SCREEN) ;
// 4、畫背景,跟2等效
//mCanvas.drawPaint(mPaint) ;
// 5、畫一個點
//mCanvas.drawPoint(23, 23, mPaint) ;
// 6、畫很多點這里的float[] 表示{x0,y0,x1,y1,x2,y2,x3,y3.....}
//mCanvas.drawPoints(new float[]{10,11,10,12,10,13,10,14,10,15,10,16}, mPaint) ;
// 7、畫線
//mCanvas.drawLine(...) ;
// 8、畫長方形 Rect 和RectF的區別?
//精度不一樣,Rect是使用int類型作為數值,RectF是使用float類型作為數值
//Rect r = new Rect(10,10,50,50) ;
//mCanvas.drawRect(r, mPaint) ;
//RectF rf = new RectF(10,10,50,50) ;
//mCanvas.drawRect(rf, mPaint) ;
//mCanvas.drawRect(10, 10, 50, 50, mPaint) ;
// 9、畫橢圓 初始化RectF的參數是(left,top,right,bottom)
//RectF rf = new RectF(100,100 ,200 ,250) ;
//mCanvas.drawOval(rf, mPaint) ;
// 10、畫圓 (圓心x0,圓心y0,半徑,paint)
//mCanvas.drawCircle(100, 100, 50, mPaint) ;
// 11、畫圓弧 RectF對象表明內切矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 參數(rf,startAngle ,angle ,sweepAngle ,paint) sweepAngle表明是否顯示圓弧三角形 angle畫多少度
//mCanvas.drawArc(rf, 60, 30, true, mPaint) ;
// 12、繪制圓角矩形 RectF是矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 50表明x方向的半徑,20表示y方向的半徑
//mCanvas.drawRoundRect(rf, 50, 20, mPaint) ;
// 13、畫任意多邊形
//Path path = new Path() ;
//path.moveTo(100, 100) ;
//path.lineTo(200, 200) ;
//path.lineTo(300, 200) ;
//mCanvas.drawPath(path, mPaint) ;
// 14、通過Path對象,也可以畫其他的圖形
//Path path = new Path() ;
//path.addCircle(100, 100, 20, Path.Direction.CCW) ;
//mCanvas.drawPath(path ,mPaint);

/*drawBitmap
drawText
drawPicture*/

/*Rect r = new Rect(100,100,200,200) ;
ByteArrayOutputStream out = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) ;
InputStream in = new ByteArrayInputStream(out.toByteArray()) ;
*/
/*Picture picture = Picture.createFromStream(mContext.getResources().openRawResource(R.raw.bg)) ;
mCanvas.drawPicture(picture) ;*/

// 15、畫bitmap對象
//mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg),100, 100, mPaint) ;

// 16、Matrix中包含了對Bitmap的處理操作
/*Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg), m, mPaint) ;*/

// 17、畫帶Matrix參數的bitmap,經過Matrix對象可以對bitmap做相關的處理,比如旋轉,縮放,移動等《關於Matrix的使用另行總結》
/*Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
m.postTranslate(300, 300) ;
mCanvas.drawBitmap(bitmap, m, mPaint) ;*/
//mCanvas.drawBitmap(....) ; 暫不總結
// 18、畫文字
//mCanvas.drawText(123, 10, 10, mPaint) ;

//mCanvas.drawText(....)

F. android canvas怎麼畫圓弧

12345

要實現這個方法,我們要傳5個參數進去。
第一個參數:RectF oval
oval 參數的作用是:定義的圓弧的形狀和大小的范圍
/**
* 這是一個居中的圓
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y); 1234567812345678

第二個參數:float startAngle
這個參數的作用是設置圓弧是從哪個角度來順時針繪畫的
canvas.drawArc(oval,-90,120,false,mPaint);11

canvas.drawArc(oval,90,110,false,mPaint);11

//設置為-180的時候也是這樣
canvas.drawArc(oval,180,140,false,mPaint);1212

//設置為360的時候也是這樣
canvas.drawArc(oval,0,140,false,mPaint);1212

第三個參數:float sweepAngle
這個參數的作用是設置圓弧掃過的角度
我們從上面的代碼就可以知道其中的作用了

第四個參數:boolean useCenter
這個參數的作用是設置我們的圓弧在繪畫的時候,是否經過圓形
值得注意的是,這個參數在我們的 mPaint.setStyle(Paint.Style.STROKE); 設置為描邊屬性的時候,是看不出效果的。
/**
*這里我是偷懶了,建議不要在onDraw()方法里初始化對象
*/
Paint p = new Paint();//這個是畫矩形的畫筆,方便大家理解這個圓弧
p.setStyle(Paint.Style.STROKE);
p.setColor(Color.RED);

mPaint.setAntiAlias(true);//取消鋸齒
mPaint.setStyle(Paint.Style.FILL);//設置畫圓弧的畫筆的屬性為描邊(空心),個人喜歡叫它描邊,叫空心有點會引起歧義
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);

/**
* 這是一個居中的圓
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y);

canvas.drawArc(oval,360,140,false,mPaint);//畫圓弧,這個時候,繪制沒有經過圓心
canvas.drawRect(oval, p);//畫矩形2223

//當我們設置為true的時候,繪制的時候就經過圓心了
canvas.drawArc(oval,360,140,true,mPaint);1212

第五個參數:Paint paint
這個參數的作用是設置我們的畫筆對象的屬性
mPaint.setAntiAlias(true);//取消鋸齒
mPaint.setStyle(Paint.Style.FILL);//設置畫圓弧的畫筆的屬性為描邊(空心),個人喜歡叫它描邊,叫空心有點會引起歧義
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);12341234

這里還是要強調一下,當 p.setStyle(Paint.Style.STROKE)的時候,我們的第四個參數boolean useCenter,是看不到效果的。
下面是代碼全文
public class CustomProgress extends View{

private Paint mPaint;

/**
* 圓的寬度
*/
private int mCircleWidth = 3;

public CustomProgress(Context context) {
this(context, null);
}

public CustomProgress(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mPaint = new Paint();
}

@Override
protected void onDraw(Canvas canvas) {
mPaint.setAntiAlias(true);//取消鋸齒
mPaint.setStyle(Paint.Style.FILL);
mPaint.setStrokeWidth(mCircleWidth);
mPaint.setColor(Color.CYAN);

/**
* 這是一個居中的圓
*/
float x = (getWidth() - getHeight() / 2) / 2;
float y = getHeight() / 4;

RectF oval = new RectF( x, y,
getWidth() - x, getHeight() - y);

canvas.drawArc(oval,360,140,true,mPaint);
}

G. android怎麼畫圓角的矩形

如果你是在自定義view的onDraw方法中:

java">RectFrectF=newRectF(100,100,500,500);//先畫一個矩形
Paintpaint=newPaint(Paint.ANTI_ALIAS_FLAG);//創建畫筆
paint.setColor(R.color.colorAccent);//添加畫筆顏色
canvas.drawRoundRect(rectF,30,30,paint);//根據提供的矩形為四個角畫弧線,(其中的數字:第一個表示X軸方向大小,第二個Y軸方向大小。可以改成其他的,你可以自己體驗),最後添加畫筆。

如果你是在布局中直接添加,樓上已經做出方法,我就不舉例了。

H. 用canvas畫只有一個角是圓角的矩形,能畫出來么

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawRoundRect(rectF, roundPx, roundPx, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } 查看原帖>>

I. android Canvas繪制的圖形(如:圓),如何實現繪制完後還能編輯

Canvas有很多方法,比如
Canvas.translate(float dx, float dy) 平移
Canvas.rotate(float degrees, float px, float py) 旋轉
還有狀態的保存與恢復,還可以使用 Matrix 來做自定義變換。

J. 在屏幕Android開發的中間,如何繪制矩形

先問一下你,應該知道View吧。就是自定義view。在那個裡面用canvas(left,top,right,bottom,Paint)

屏幕中間的坐標就是手機屏幕x/2,y/2的地方。然後從這個坐標減去矩形寬(對應x)和高(對應y)就是矩形的左上角的坐標,也就是前兩個參數,而後面兩個就是從中心坐標加上矩形的寬和高。

比方說,我在720,1280的屏幕中間畫矩形。就是
canvas.drawRect
(X-w/2 , Y-h/2 , X+w/2 , Y+w/2 , p)
這里X是屏幕寬度大小的一半
Y是高度發現的一半
w是矩形的寬度
h是矩形的高度
p是Paint對象

希望採納

閱讀全文

與androidcanvas圓角矩形相關的資料

熱點內容
解壓視頻白頭小哥 瀏覽:748
cadq命令 瀏覽:956
python連接本地資料庫報錯 瀏覽:194
手機模擬加密禁卡操作 瀏覽:105
電荷數怎麼演算法 瀏覽:589
cad如何打開命令行 瀏覽:150
php圖片限制大小 瀏覽:164
程序員一夜未歸 瀏覽:593
蘋果xsmaxapp怎麼不顯示更新 瀏覽:600
蘋果app怎麼清除角標 瀏覽:483
解壓屁屁玩具臟了怎麼辦 瀏覽:670
演算法識別自動折疊 瀏覽:9
dos命令遍歷文件 瀏覽:456
翻譯整個pdf 瀏覽:198
怎麼給解壓軟體授權 瀏覽:622
怎麼換手機桌面壁紙安卓 瀏覽:957
pdf轉換閱讀器 瀏覽:344
特斯拉怎麼app預約充電 瀏覽:498
安卓怎麼錄像更清晰 瀏覽:919
怎麼伺服器輸入命令沒有顯示出來 瀏覽:799