中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android怎么用Canvas繪制貝塞爾曲線

發布時間:2022-06-29 14:09:17 來源:億速云 閱讀:166 作者:iii 欄目:開發技術

這篇文章主要介紹了Android怎么用Canvas繪制貝塞爾曲線的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android怎么用Canvas繪制貝塞爾曲線文章都會有所收獲,下面我們一起來看看吧。

用Canvas畫貝塞爾曲線,要畫貝塞爾曲線首先了解貝塞爾曲線:

由于用計算機畫圖大部分時間是操作鼠標來掌握線條的路徑,與手繪的感覺和效果有很大的差別。即使是一位精明的畫師能輕松繪出各種圖形,拿到鼠標想隨心所欲的畫圖也不是一件容易的事。這一點是計算機萬萬不能代替手工的工作,所以到目前為止人們只能頗感無奈。使用貝塞爾工具畫圖很大程度上彌補了這一缺憾。

Android怎么用Canvas繪制貝塞爾曲線

貝塞爾曲線是計算機圖形圖像造型的基本工具,是圖形造型運用得最多的基本線條之一。它通過控制曲線上的四個點(起始點、終止點以及兩個相互分 離的中間點)來創造、編輯圖形。其中起重要作用的是位于曲線中央的控制線。這條線是虛擬的,中間與貝塞爾曲線交叉,兩端是控制端點。移動兩端的端點時貝塞 爾曲線改變曲線的曲率(彎曲的程度);移動中間點(也就是移動虛擬的控制線)時,貝塞爾曲線在起始點和終止點鎖定的情況下做均勻移動。注意,貝塞爾曲線上 的所有控制點、節點均可編輯。這種“智能化”的矢量線條為藝術家提供了一種理想的圖形編輯與創造的工具。

在安卓開發中Canvas提供了畫貝塞爾曲線的方法,在Canvas中的quadTo方法只能畫3次的貝塞爾曲線,不過還提供了rQuadTo方法實現了以結束點為原點的續接。用這個做一個滾動的波浪線,如果把這個波浪線截取一塊可以做成類似加速球的東西

Android怎么用Canvas繪制貝塞爾曲線

/**
 * Created by Administrator on 2015/9/17.
 */
public class MyPathView extends View {
private int height;
private int width;
private Path path;//路徑
private Paint mPaint;
private Paint mPaintpoint;
private int count;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0x23://這應該寫一個static final的變量
count++;
if (count < 80) {//形成循環,因為波浪線是兩段40所以一個周期80
                        setCount(count);
handler.sendEmptyMessageDelayed(0x23, 20);
                    } else {
count = 0;
handler.sendEmptyMessageDelayed(0x23, 20);
                    }
break;
            }

        }
    };

public void setCount(int count) {
this.count = count;
        invalidate();
    }

public MyPathView(Context context) {
super(context);
    }

public MyPathView(Context context, AttributeSet attrs) {
super(context, attrs);
path = new Path();
mPaint = new Paint();
mPaintpoint = new Paint();
mPaintpoint.setStrokeWidth(10);
mPaintpoint.setColor(Color.YELLOW);
mPaint.setAntiAlias(true);
mPaint.setTextSize(50);
mPaint.setStyle(Paint.Style.STROKE);
handler.sendEmptyMessage(0x23);//
    }

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec);
height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
        setMeasuredDimension(width, height);
    }

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

path.reset();
path.moveTo(count, 100);
for (int i = 0; i < 10; i++) {
path.rQuadTo(20, 10, 40, 0);//以(count=0,100)為原點開始畫,控制點、結束點
path.rQuadTo(20, -10, 40, 0);//以(40,0)為原點開始畫,形成一個類似余弦的波浪周期
        }
        canvas.drawPath(path, mPaint);
使用quadTo繪制曲線
//      path.moveTo(100, 100);
//        path.quadTo(100, 400, 300, 300);//控制點終點
//        canvas.drawPoint(100,100,mPaintpoint);//起點
//        canvas.drawPoint(100,400,mPaintpoint);//控制點
//        canvas.drawPoint(300,300,mPaintpoint);//終點
}
}

關于“Android怎么用Canvas繪制貝塞爾曲線”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Android怎么用Canvas繪制貝塞爾曲線”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁化县| 保亭| 巧家县| 彰武县| 枣阳市| 屏山县| 宿州市| 迁西县| 安国市| 左贡县| 中山市| 栖霞市| 乌兰察布市| 建水县| 克山县| 刚察县| 安丘市| 武宁县| 云林县| 海盐县| 东源县| 深水埗区| 凤翔县| 杭锦后旗| 双流县| 会东县| 迭部县| 格尔木市| 晋中市| 崇明县| 宁陵县| 阆中市| 榕江县| 广水市| 红河县| 京山县| 修水县| 辽宁省| 北宁市| 凭祥市| 靖宇县|