我正在使用图像视图并使用layerDrawable绘制叠加图像.
我已经使用了两个位图原始和myBitmap.
放大后,我不能在正确的位置绘制圆,它被绘制在不同的位置.
我已经使用了两个位图原始和myBitmap.
放大后,我不能在正确的位置绘制圆,它被绘制在不同的位置.
这是我使用的代码,
ImageView view = (ImageView) findViewById(R.id.imageView); view.setonTouchListener(this); Options options = new BitmapFactory.Options(); options.inScaled = false; original = BitmapFactory.decodeResource(getResources(),R.drawable.mainscreen,options); original= getResizedBitmap(original,width,200); myBitmap = func(original); Resources r = getResources(); layers = new Drawable[2]; layers[0] = new BitmapDrawable(original); layers[1] = new BitmapDrawable(myBitmap); LayerDrawable layerDrawable = new LayerDrawable(layers); view.setimageDrawable(layerDrawable); bitmap = Bitmap.createBitmap(width,200,Config.ARGB_8888); pcanvas = new Canvas(); pcanvas.setBitmap(bitmap); pcanvas.drawBitmap(grayScale,null); public boolean onTouch(View v,MotionEvent rawEvent) { WrapMotionEvent event = WrapMotionEvent.wrap(rawEvent); // ... ImageView view = (ImageView) v; // Dump touch event to log // dumpEvent(event); if (isZoomrequired == false) { x = (int) rawEvent.getX(); y = (int) rawEvent.getY(); r = SettingsActivity.brushsize; pcanvas.drawCircle(x,y,r,mPaint); layers[1] = new BitmapDrawable(bitmap); LayerDrawable layerDrawable = new LayerDrawable(layers); view.setimageDrawable(layerDrawable); } else { // Handle touch events here... switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: savedMatrix.set(matrix); start.set(event.getX(),event.getY()); Log.d(TAG,"mode=DRAG"); mode = DRAG; break; case MotionEvent.ACTION_POINTER_DOWN: olddist = spacing(event); Log.d(TAG,"olddist=" + olddist); if (olddist > 10f) { savedMatrix.set(matrix); midPoint(mid,event); mode = ZOOM; Log.d(TAG,"mode=ZOOM"); } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: mode = NONE; Log.d(TAG,"mode=NONE"); break; case MotionEvent.ACTION_MOVE: if (mode == DRAG) { // ... matrix.set(savedMatrix); matrix.postTranslate(event.getX() - start.x,event.getY() - start.y); } else if (mode == ZOOM) { float newdist = spacing(event); Log.d(TAG,"newdist=" + newdist); if (newdist > 10f) { matrix.set(savedMatrix); float scale = newdist / olddist; matrix.postScale(scale,scale,mid.x,mid.y); } } break; } view.setimageMatrix(matrix); } return true; // indicate event was handled }
请帮助我放大后,我需要在正确的位置绘制圆形.
任何帮助将不胜感激.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。