0
찍은 그림에 선을 그 으려하지만 선이 그려지지 않습니다. Canvas 사용 방법이 잘못 되었나요? 캔버스를 사용하는 방법을 잘 모르겠다 고 생각합니다. 어디서 수정해야합니까? 제발 가르쳐주세요.캔버스에 선이 그려지지 않습니다.
PhotoMemoActivity
public class PhotoMemoActivity extends Activity {
Uri _uri;
Canvas _canvas;
DrawCanvas _drawCanvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_memo);
takePicture();
_drawCanvas = new DrawCanvas(getApplicationContext());
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if(requestCode == 0){
if(resultCode == RESULT_OK){
ImageView imageView = (ImageView)findViewById(R.id.picture);
imageView.setImageURI(_uri);
Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
Bitmap drawableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
_canvas = new Canvas(drawableBitmap);
}
}
}
public void takePicture(){
String fileName = System.currentTimeMillis() + ".png";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, fileName);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
_uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, _uri);
startActivityForResult(intent, 0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.photo_memo, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onTouchEvent(MotionEvent event){
float firstX=0, firstY=0, lastX, lastY, x, y;
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
firstX = event.getX();
firstY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
lastX = event.getX();
lastY = event.getY();
_drawCanvas.draw(firstX, firstY, lastX, lastY, _canvas);
break;
default:
break;
}
return true;
}
}
DrawCanvas
public class DrawCanvas extends ImageView {
public DrawCanvas(Context context){
super(context);
}
public void draw(float firstX, float firstY, float lastX, float lastY, Canvas canvas){
Paint p = new Paint();
p.setStyle(Paint.Style.FILL);
p.setColor(Color.GREEN);
p.setStrokeWidth(10);
canvas.drawLine(firstX, firstY, lastX, lastY, p);
invalidate();
}
}
당신을 감사합니다! 그림 사용 방법을 찾은 것을 기쁘게 생각합니다. 친절에 감사드립니다. – tarofess
예! 문제가 생기면 코드가 꽤 거칠고 맨손의 뼈다. –
OK! 정말 감사드립니다! – tarofess