<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
用Canvas畫貝塞爾曲線,要畫貝塞爾曲線首先了解貝塞爾曲線:
由於用計算機畫圖大部分時間是操作滑鼠來掌握線條的路徑,與手繪的感覺和效果有很大的差別。即使是一位精明的畫師能輕鬆繪出各種圖形,拿到滑鼠想隨心所欲的畫圖也不是一件容易的事。這一點是計算機萬萬不能代替手工的工作,所以到目前為止人們只能頗感無奈。使用貝塞爾工具畫圖很大程度上彌補了這一缺憾。
貝塞爾曲線是計算機圖形影象造型的基本工具,是圖形造型運用得最多的基本線條之一。它通過控制曲線上的四個點(起始點、終止點以及兩個相互分 離的中間點)來創造、編輯圖形。其中起重要作用的是位於曲線中央的控制線。這條線是虛擬的,中間與貝塞爾曲線交叉,兩端是控制端點。移動兩端的端點時貝塞 爾曲線改變曲線的曲率(彎曲的程度);移動中間點(也就是移動虛擬的控制線)時,貝塞爾曲線在起始點和終止點鎖定的情況下做均勻移動。注意,貝塞爾曲線上 的所有控制點、節點均可編輯。這種“智慧化”的向量線條為藝術家提供了一種理想的圖形編輯與創造的工具。
在安卓開發中Canvas提供了畫貝塞爾曲線的方法,在Canvas中的quadTo方法只能畫3次的貝塞爾曲線,不過還提供了rQuadTo方法實現了以結束點為原點的續接。用這個做一個捲動的波浪線,如果把這個波浪線擷取一塊可以做成類似加速球的東西
/** * 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);//終點 } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45