① android 畫板canvas如何畫五角星
這個應該不難吧 用path path.moveTo(xx,xx);
path.lineTo(xx,xx);
算下這個五角星個點坐標就行了。
② Android畫板縮放重繪比較卡頓,有沒有什麼辦法可以優化
雙緩沖區,
不行就opengles
當然,一般簡單圖形也不至於卡頓,你看看你代碼有沒有問題吧.
③ android畫板怎麼記錄已經畫線地方的坐標啊
假如 A點跟B點連成一條直線 A點在左 B點在右
判斷C點是在這條直線上
計算一下 A-B跟y軸的夾角 再計算一下 A-C跟Y軸的夾角 如果夾角一致 就表示C點在A-B的連線上
④ 安卓裡面如何實現畫板的蠟筆效果,試過了很多API都不行!
的確,是沒有現成的API可用的。蠟筆我不知道,提供一個做粉筆效果的方法。首先做一張圓形的,上面有各種灰度點離散分部的圖,然後比如你想要白色的粉筆效果,就用白色跟上面那張圖上面的每個像素點的rgb值做「&」運算,這樣得到一張新的bitmap,再把這張bitmap畫在canvas上面,就是一個看上去有粉筆效果的大圓點。當然畫bitmap的時候,paint稍微加一點alpha值,做點透明效果,這樣更加真實。以上的方法是我從一個黑板app反編譯後的代碼裡面得到的方法,希望對你有用。
⑤ 新手 自己寫android畫板 可是畫出的線條,有角,就是畫的弧線不平滑
那麼你的板板有問題,你應該去買的地方咨詢一下,或者上官方網站問問。線畫不直有兩個問題,一是新手,新手線條都不好,需要一個月去磨合。
二是板板有問題,需要咨詢廠家網站。你試試用sai軟體畫,把裡面的防抖指數調到最高,看看畫出的線條還抖動不,如果不抖動,就是第一個問題,如果照舊就是板板問題。
⑥ android開發怎麼做畫板工具箱
千鋒扣丁學堂Android開發入門為您解答:
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.iv);
// 創建一張空白圖片
baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
// 創建一張畫布
canvas = new Canvas(baseBitmap);
// 畫布背景為灰色
canvas.drawColor(Color.GRAY);
// 創建畫筆
paint = new Paint();
// 畫筆顏色為紅色
paint.setColor(Color.RED);
// 寬度5個像素
paint.setStrokeWidth(5);
// 先將灰色背景畫上
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
iv.setImageBitmap(baseBitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 獲取手按下時的坐標
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
// 獲取手移動後的坐標
int stopX = (int) event.getX();
int stopY = (int) event.getY();
// 在開始和結束坐標間畫一條線
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 實時更新開始坐標
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(baseBitmap);
break;
}
return true;
}
});
}
public void save(View view) {
try {
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
OutputStream stream = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
// 模擬一個廣播,通知系統sdcard被掛載
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
Toast.makeText(this, "保存圖片成功", 0).show();
} catch (Exception e) {
Toast.makeText(this, "保存圖片失敗", 0).show();
e.printStackTrace();
}
}
}
簡單的布局文件
<relativelayout xmlns:android="http://www.codingke.com/courses-android-2.html" xmlns:tools="http://www.codingke.com/courses-android-2.html" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<button android:id="@+id/button1" android:onclick="save" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:text="保存圖片">
<imageview android:layout_above="@id/button1" android:id="@+id/iv" android:layout_width="match_parent" android:layout_height="match_parent">
</imageview></button></relativelayout>
⑦ android畫板問題
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.iv);
// 創建一張空白圖片
baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
// 創建一張畫布
canvas = new Canvas(baseBitmap);
// 畫布背景為灰色
canvas.drawColor(Color.GRAY);
// 創建畫筆
paint = new Paint();
// 畫筆顏色為紅色
paint.setColor(Color.RED);
// 寬度5個像素
paint.setStrokeWidth(5);
// 先將灰色背景畫上
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
iv.setImageBitmap(baseBitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 獲取手按下時的坐標
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
// 獲取手移動後的坐標
int stopX = (int) event.getX();
int stopY = (int) event.getY();
// 在開始和結束坐標間畫一條線
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 實時更新開始坐標
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(baseBitmap);
break;
}
return true;
}
});
}
public void save(View view) {
try {
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
OutputStream stream = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
// 模擬一個廣播,通知系統sdcard被掛載
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
Toast.makeText(this, "保存圖片成功", 0).show();
} catch (Exception e) {
Toast.makeText(this, "保存圖片失敗", 0).show();
e.printStackTrace();
}
}
}
⑧ android 畫板問題
??問題不太清楚,你要畫坐標圖的話要用一張坐標方格紙墊在最下面,然後用硫酸紙放在方格紙上。
⑨ Android開發在畫板上畫些東西,甩一甩手機實現畫板上的東西變成潑墨效果。
畫畫板實現起來其實很簡單,我們只需要利用android給我們提供的Canvas類來操作就可以實現簡單的畫畫功能
直接看代碼,注釋都寫清楚了
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap baseBitmap;
private Canvas canvas;
private Paint paint;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.iv = (ImageView) this.findViewById(R.id.iv);
// 創建一張空白圖片
baseBitmap = Bitmap.createBitmap(480, 640, Bitmap.Config.ARGB_8888);
// 創建一張畫布
canvas = new Canvas(baseBitmap);
// 畫布背景為灰色
canvas.drawColor(Color.GRAY);
// 創建畫筆
paint = new Paint();
// 畫筆顏色為紅色
paint.setColor(Color.RED);
// 寬度5個像素
paint.setStrokeWidth(5);
// 先將灰色背景畫上
canvas.drawBitmap(baseBitmap, new Matrix(), paint);
iv.setImageBitmap(baseBitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX;
int startY;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 獲取手按下時的坐標
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
// 獲取手移動後的坐標
int stopX = (int) event.getX();
int stopY = (int) event.getY();
// 在開始和結束坐標間畫一條線
canvas.drawLine(startX, startY, stopX, stopY, paint);
// 實時更新開始坐標
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(baseBitmap);
break;
}
return true;
}
});
}
public void save(View view) {
try {
File file = new File(Environment.getExternalStorageDirectory(),
System.currentTimeMillis() + ".jpg");
OutputStream stream = new FileOutputStream(file);
baseBitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
// 模擬一個廣播,通知系統sdcard被掛載
Intent intent = new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
intent.setData(Uri.fromFile(Environment
.getExternalStorageDirectory()));
sendBroadcast(intent);
Toast.makeText(this, "保存圖片成功", 0).show();
} catch (Exception e) {
Toast.makeText(this, "保存圖片失敗", 0).show();
e.printStackTrace();
}
}
}
簡單的布局文件
?
1
2
3
4
5
6
7
8
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">
<button android:id="@+id/button1" android:onclick="save" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:text="保存圖片">
<imageview android:layout_above="@id/but
http://www.2cto.com/kf/201401/273814.html
⑩ Android動態添加自定義控制項(照片裝飾素材)canvas 畫板相關問題!求幫助!
點擊的時候獲取到整個父布局(你添加自定義view的父布局),隱藏或者移除不是點擊的這個組件就好了啊,如果不好確定父布局裡面哪個是點擊的空間,那就給每個控制設置id就可以了