캔버스에 그 이미지를 그리려면 어떻게해야합니까?캔버스에 그릴 수있는 이미지
답변
노력이
당신은 비트 맵으로 이미지를로드 할 필요Bitmap mBitmap = Bitmap.createScaledBitmap(Bitmap src, int dstWidth, int dstHeight, boolean filter);
protected void onDraw(Canvas canvas) {
canvas.drawColor(0xFFAAAAAA);
canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
}
:
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.your_image);
그런 다음 비트 맵 변경 가능하고 그 위에 캔버스 작성 : 다음
Canvas canvas = new Canvas(bitmap.copy(Bitmap.Config.ARGB_8888, true));
당신을 캔버스에 그릴 수 있습니다.
내 .png가 크고로드 된 후 잘리는 경우 어떻게합니까? ? 즉, 나는 자지 못하게하고 싶다. 화면보다 클 수 있습니다. 그러면 확대/축소 및 이동이 가능하도록 노력할 것입니다. 어떻게해야합니까? 너무 고마워! –
@perfectm1ng BitmapRegionDecoder를 사용하여보세요. 큰 이미지를 부분로드 할 수 있습니다. 따라서 현재 렌더링하고있는 이미지의 일부분 만로드 할 수 있어야합니다. –
동일한 문제가 있습니다. 코드 Canvas cs = new Canvas (bitmap); 리소스 res = getResources(); 비트 맵 bitmapx = BitmapFactory.decodeResource (res, R.drawable.overlay_good_full); 비트 맵 bitmapxx = BitmapFactory.decodeResource (res, R.drawable.overlay_bad_full); if (text.equals ("Good")) { cs.drawBitmap (bitmapx, 0, 0, tPaint); } else { cs.drawBitmap (bitmapxx, 0, 0, tPaint); } –
package com.android.jigsawtest;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SurafaceClass extends SurfaceView implements
SurfaceHolder.Callback {
Bitmap mBitmap;
Paint paint =new Paint();
public SurafaceClass(Context context) {
super(context);
mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(mBitmap, 0, 0, paint);
}
}
onDraw에서 새 Paint 객체를 만드는 것이 성능이 좋지 않습니다. –
괜찮습니다. 대답을 업데이트했습니다. – user1140237
나는 당신이 당신의 코드로 비트 맵으로 이미지를로드 할 수 있는지 모르겠어요 (http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.1_r2/android/widget/ProgressBar.java#ProgressBar.onDraw%28android.graphics.Canvas%29) 는 Drawable.draw(Canvas c)
를 사용합니다.
캔버스에 그리기를 그릴 수있는 좋은 방법은 스스로를 디코딩하지만, 그렇게 할 수있는 시스템으로 떠나되지 않습니다
Drawable d = getResources().getDrawable(R.drawable.foobar);
d.setBounds(left, top, right, bottom);
d.draw(canvas);
이 드로어 블의 모든 종류의,뿐만 아니라 비트 맵으로 작동합니다. 또한 크기가 변경된 경우 다시 같은 드로어 블을 다시 사용할 수 있음을 의미합니다.
캔버스 방식으로 애니메이션에 애니메이션 목록 (여러 프레임)을 사용하는 방법은 무엇입니까? – RichieHH
매우 유용합니다! 최소한 로켓 과학이없는 배경 그림 만 필요할 때! – Asim
@RichieHH SurfaceView (적절하게 낭비)에 내 배경이 있고 그 표면 뷰가 Framelayout에 포함되어 있고 그 framelayout에 애니메이션을 적용한 ImageView가 포함되어 있습니다. – AgentKnopf
이 방법을 사용할 수도 있습니다.
Resources res = getResources();
Bitmap bitmap = BitmapFactory.decodeResource(res, yourDrawable);
yourCanvas.drawBitmap(bitmap, 0, 0, yourPaint);
BitmapFactory 클래스에는 "BitmapFactory.decodeResource (Resource, Drawable);"메서드가 없습니다. ... – Crisic
@Crisic 'yourDrawable'은 정수라고 가정합니다. –
Drawable d = ContextCompat.getDrawable(context, R.drawable.***)
d.setBounds(left, top, right, bottom);
d.draw(canvas);
gerResource().로 Drawable을 만듭니다. getDrawable (id); – Vikram
getDrawable (id)를 사용하지 않으려면 위의 ContextCompat 호출이나 getDrawable (id, theme) 호출을 사용해야합니다. https://developer.android.com/reference/android/content/res/Resources.html#getDrawable(int) – wblaschko
나를 위해, 그것은'setBounds'를 사용해야했습니다. 그것 없이는 아무것도 표시되지 않았습니다. –
- 1. 안드로이드, 캔버스, 그릴 이미지
- 2. 콜라주 캔버스에 이미지 배치
- 3. j2me의 캔버스에 텍스트를 수직으로 그릴 수 있습니까
- 4. 캔버스에 그림을 그릴 때 부모를 채우는 방법
- 5. 캔버스에 객체/이미지 그리기
- 6. Raphael.js를 사용하여 이미지 그릴
- 7. 안드로이드 : 문제 캔버스에 반복해서 같은 비트 맵을 그릴 때
- 8. j2me의지도에 점이나 선을 그릴 수있는 방법은 무엇입니까?
- 9. image.onload를 사용하여 캔버스에 여러 이미지 그리기
- 10. 어떻게 HTML 캔버스에 그래디언트 선을 그릴 수 있습니까?
- 11. 캔버스에 8 개 이상의 직사각형을 그릴 수 없습니다.
- 12. 파이썬에서 하나의 캔버스에 여러 이미지 추가하기
- 13. 플렉스 : 캔버스에 선택 가능한 이미지 추가하기
- 14. 문제 캔버스에 같은 이미지 두 개 그리기
- 15. 캔버스에 비트 맵 그리기
- 16. 캔버스에 텍스트 그리기
- 17. 캔버스에 넣기
- 18. 단추로 그릴 수있는 리소스가 표시되지 않습니다.
- 19. 전기 회로도를 그릴 수있는 Javascript 라이브러리가 있습니까?
- 20. 프로젝트의 아키텍처를 그릴 수있는 도구는 무엇입니까?
- 21. HTML5로 그릴 수있는 가장 빠른 방법은 무엇입니까
- 22. Matlab에서 베 지어 곡선을 그릴 수있는 방법
- 23. UIScrollView의 contentView에 코어 그래픽을 그릴 수있는 방법
- 24. 다른 방법으로 iPhone을 그릴 수있는 방법은 무엇입니까?
- 25. Android 캔버스에 긴 텍스트 배치
- 26. 캔버스에 그리기
- 27. 안드로이드에서 그릴 수있는 sdcard에 PNG 이미지를 캔버스로로드하는 방법은 무엇입니까?
- 28. J2ME에서 캔버스에 단추를 만드는 방법은 무엇입니까?
- 29. 캔버스에 바인딩
- 30. 캔버스에 JPanel을 그리는 방법은 무엇입니까?
을하지만 canvas.drawBitmap (mBitmap, 0, 0, mBitmapPaint)를 사용하는 경우는 : 그것은 당신의 캔버스에 큰 drawble에 맞게 변경됩니다 그것은 작동하고 그것은 캔버스에 저장된 이미지를로드하지만 동시에 취소 및 다시 작업을 멈추고 내 코드를 확인하십시오 http://pastebin.com/cP9w6stm – AndroidDev