세미 정적 (거의 변경되지 않는) 비트 맵을 만드는보기가 아닌 아이콘을 허용하는 사용자 지정보기 (표시)를 만들었습니다. 아이디어는 여러 아이콘을 화면에 표시하여 캔버스에 인쇄하는 것입니다. 내 문제는 디스플레이 실제로 캔버스에 아이콘 비트 맵을 그릴 수 없다는 것입니다.작은 비트 맵을 더 큰 캔버스로 그릴 수없는 이유는 무엇입니까?
아래 코드는 내가 가지고있는 것의 실제 예입니다. (내 말은 작업이 제대로 실행함으로써, 내가 원하는 인쇄하지 않는 것이 그것에)
public class AndroidTestoActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout fl = new FrameLayout(this);
Display tv = new Display(this);
tv.setLayoutParams(new LayoutParams(200, 200));
fl.addView(tv);
setContentView(fl);
}
public class Display extends View {
Paint vPaint = new Paint();
Icon item = new Icon();
public Display(Context context) {
super(context);
vPaint.setStyle(Paint.Style.FILL_AND_STROKE);
vPaint.setColor(0x0ff000000);
setBackgroundColor(0xffffffff);
}
@Override public void onDraw(Canvas canvas) {
canvas.scale(200, 200);
item.onDraw(canvas);
canvas.drawLine(0.0f, 0.0f, 1.0f, 1.0f, vPaint);
}
}
public class Icon {
Bitmap myImage;
Paint mPaint = new Paint();
public Icon() {
myImage = Bitmap.createBitmap(50, 50, Bitmap.Config.ARGB_8888);
mPaint.setStyle(Style.FILL);
mPaint.setColor(0xffff0000);
Canvas c = new Canvas(myImage);
c.scale(50, 50);
c.drawCircle(0.5f, 0.5f, 0.5f, mPaint);
}
public void onDraw(Canvas canvas) {
canvas.drawBitmap(myImage, 0, 0, null);
}
}
}
이 코드에서 선 밖으로 인쇄해야 오른쪽을 낮추고 0에서 50 픽셀 직경의 원을 그릴 상단을 왼쪽, 0에서 50, 50까지. 내가 얻는 것은 모두 선이다. 그러나 비트 맵을 파일로 인쇄하면 파일은 정확히 무엇을 출력해야합니다.
어떤 일이 일어나고 있는지 실마리가 있습니까?
편집
내 질문에 명확히하기 위해, 나는 DisplayView보다 훨씬 더 작은 비트 맵을 만드는 오전. 내가 비트 맵을 DisplayView에 그리려고 할 때 비트 맵은 그리지 않았고 적절하게 크기가 조정되지 않았습니다. 캔버스가 Bitmap을 제대로 그리지 않는 이유는 무엇입니까? 으로 모니터의 된 onDraw 방법에
UPDATE
, 나는 canvas.scale(200, 200);
이전에 선 items.onDraw(canvas);
을 움직였다. 이제 테스트 서클이 올바르게 그려집니다. 그 단순한 변화가 원을 그리는 방식을 완전히 무시하는 것은 무엇입니까?
'scale()','translate()','skew()'및 [언급] (http://developer.android.com/reference/android/graphics/Canvas.html) "현재 행렬"은 [변형 행렬]에서 작동합니다. (http://en.wikipedia.org/wiki/Transformation_matrix) - 원하는 것을 얻기 위해 순차적으로 수행하는 것처럼 간단하지 않습니다.). 그러나 나는이 특별한 경우에 그 선을 움직이는 것에 대한 대답을 지금 당장 기억하지 못합니다. – Izkata