Android drawBitmap位置参数

标签 android canvas bitmap drawbitmap

我是 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/

相关文章:

android - 图片已经关闭。 CameraX 分析仪

javascript - 如何改变 Canvas 本身的形状?

javascript - 来自纯 javascript 的 Paper.js

delphi - Canvas /位图滚动问题

Android 如何在位图 xml 中设置不透明度

java - 调用 AWS API - 签名,身份验证 header - 在 android 中使用 OkHTTP

java - 在ListFragment中找不到ListView 'android.R.id.list'

android - 工具栏与 float 操作按钮重叠

c# - 如何在 WPF 中叠加图像?

android - 如何在android中找到给定的位图图像是模糊图像还是未模糊图像