我有一个绘图应用程序,允许用户绘制到空白画布。我试图绘制当前位图的缩放“缩略图”,以便当用户在视图中缩放时,他们可以引用缩略图以了解它们在整个绘制画布中的位置。我的缩放工作正常,并且正在将缩略图显示在正确的位置,但是当添加新的线条/形状时,缩略图似乎并未在后续的onDraw中更新。Android缩放画布位图
所以,我有机会获得潜在的位图这个观点(显示缩略图,可以很容易地将位图保存到文件等)我在onSizeChanged下列()进行查看:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// set the canvas height, panning, etc, based on the now inflated View
mWidth = getWidth();
mHeight = getHeight();
mAspectRatio = mWidth/mHeight;
mPanX = 0;
mPanY = 0;
// create the Bitmap, set it to the canvas
mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mCanvas.setBitmap(mBitmap);
draw(mCanvas);
}
然后,当用户绘制和无效()被调用时,我做的onDraw()以下,以生成缩略图:
@Override
protected void onDraw(Canvas canvas) {
<snipped code that draws paths, shapes to canvas>
if (mScaled) {
Bitmap out = Bitmap.createScaledBitmap(mBitmap, (int) thumbWidth, (int) thumbHeight, false);
canvas.drawBitmap(out, null, thumbnailRectF, thumbCanvasPaint);
}
}
缩略图被显示在使用thumbCanvasPaint通过thumbnailRectF限定的空间,但在随后的onDraw()调用中,缩放的位图具有没有改变它的原始状态,即使全尺寸的活动画布显示了所有的绘图等。基于一些测试,在我看来,虽然我设置了初始调用画图(mCanvas)的位图,后续onDraws正在写入底层位图,而不是在onSizeChanged()中指定的位图。
因此,我想我想知道如何将onDraw画布绑定到位图,以便读取执行重新大小,保存等操作。查看this question,我认为draw(mCanvas) ;调用会将onDraw绑定到mCanvas中指定的位图(在我的例子中是mBitmap),但实际上,就更新画布而言,它似乎不起作用。
感谢,
保罗
我可以看到你的解决方案whith这个例子的相似性:http://www.barebonescoder.com/2010/06/android-development-simple-2d-graphics-part-1/ – Lumis 2011-02-08 02:06:00