我是 android 图形编程的新手。 我想在 Canvas 中央放置一个位图。因此,我使用:
public void onDraw(Canvas canvas) {
float canvasx = (float) canvas.getWidth();
float canvasy = (float) canvas.getHeight();
然后我调用我想使用的位图,
Bitmap myBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.myBitmap);
然后我使用这些找到我的位图的坐标位置,
float bitmapx = (float) myBitmap.getWidth();
float bitmapy = (float) myBitmap.getHeight();
float boardPosX = (canvasx - bitmapx) / 2;
float boardPosY = (canvasy - bitmapy) / 2;
最后,我使用绘制位图,
canvas.drawBitmap(myBitmap, boardPosX, boardPosY, null);
但是,位图不在 Canvas 的中心。它稍微低于我认为应该是 Canvas 中心的位置。
在 onDraw() 方法中获取 Canvas 的高度和宽度是否正确? 知道出了什么问题吗? 提前致谢。
*编辑:
最后,我通过更改使其工作
public void onDraw(Canvas canvas) {
float canvasx = (float) canvas.getWidth();
float canvasy = (float) canvas.getHeight();
到
public void onDraw(Canvas canvas) {
float canvasx = (float) getWidth();
float canvasy = (float) getHeight();
但是,我不知道为什么这个更改解决了我的问题。
最佳答案
使用这个:
float boardPosX = ((canvasx/2) - (bitmapx / 2));
float boardPosY = ((canvasy/2) - (bitmapy / 2));
关于Android drawBitmap位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11667923/