java - 在 Canvas 上绘图时 Y 轴错误

标签 java android android-canvas

我尝试在 Canvas 上绘图,但 Y 轴似乎错误。看起来 0 实际上是 -100。

例如,当我绘制一个距离每个边框 10 px 的红色正方形时,我得到以下正方形:

enter image description here

我正在使用的代码:

    Canvas canvas = new Canvas(bitmap);
    Paint paint = new Paint();
    paint.setColor(Color.RED);
    paint.setStyle(Paint.Style.FILL);
    canvas.drawRect(10, 10, canvas.getWidth() - 10, canvas.getHeight() - 10, paint);

我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <include layout="@layout/toolbar" />

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <ImageView
                android:background="@color/facebook_color"
                android:id="@+id/catchImage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:scaleType="fitCenter"
                android:layout_marginBottom="20dp"
                android:adjustViewBounds="true"  />

            <View
                android:background="@color/news_item_seperator_stroke"
                android:layout_width="match_parent"
                android:layout_height="1px"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                />
        </LinearLayout>

    </ScrollView>
</LinearLayout>

当我使用以下代码时,一切正常:

Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(0, 0, canvas.getWidth()/2, canvas.getHeight()/2, paint);

Paint paint2 = new Paint();
paint.setColor(Color.BLUE);
paint.setStyle(Paint.Style.FILL);
canvas.drawRect(canvas.getWidth()/2, canvas.getHeight()/2, canvas.getWidth(), canvas.getHeight(), paint2);

/image/Y0vvb.png

最佳答案

你的代码很好,你的 Canvas 只是比当前屏幕大。检查你的布局 xml。请记住:坐标是相对于 Canvas 的,而不是相对于 Canvas 的可见部分。

关于java - 在 Canvas 上绘图时 Y 轴错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30847646/

相关文章:

Java:如何计算ArrayList中不重复(只出现一次)的字符串?

java - 了解 Java 中 processbuilder 的示例代码

android - 根据一天中的时间问候 (Android)

android - 在 Canvas 上绘制文本的问题

android canvas 绘制文本部分

android - 如何使用 Jetpack Compose 创建 HSL 饱和度和亮度变化渐变或画笔编辑器?

java - 当分隔符可以嵌套时分割字符串

Java/Selenium 相对路径

android - 可以将现有的 apk 版本迁移到 App Bundle 格式吗?

android - 如何拥有带有数字字符的 TextView