gpt4 book ai didi

android - drawLine() 方法未正确绘制线条 (Android)

转载 作者:行者123 更新时间:2023-11-30 02:59:45 26 4
gpt4 key购买 nike

我正在用安卓开发游戏。我是初学者,所以我对android了解不多。我遇到了与 Canvas 相关的问题。我正在尝试设计包含圆网格(5 * 6)的板。 我想在它们之间显示线条,使它们看起来像盒子。为此,我使用 drawLine() 函数。 我尝试了不同的值组合,但仍然无法按要求显示 Canvas 。我想删除从第一行圆圈和最左边一列圆圈向上的线。我在下面分享我的代码,请查看此代码并建议我解决方案?此链接显示我当前在设备屏幕上获得的输出 ( http://postimg.org/image/m4kgv4ezz/ )。

代码:

package com.example.linedraw;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new board(this));
}

public class board extends View
{
Paint pBack = new Paint();
Paint pDot = new Paint();

int cols = 5;
int rows = 6;

public board(Context context)
{
super(context);
pBack.setARGB(255, 255, 102, 0);
pDot.setARGB(255, 255, 255, 255);
}

@SuppressLint("DrawAllocation")
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawPaint(pBack);
// BitmapFactory.decodeResource(getResources(), R.drawable.marbleback);
//Bitmap bd= BitmapFactory.decodeResource(getResources(), R.drawable.blackball);
float xStep = canvas.getWidth() / (cols + 1);
float yStep = canvas.getHeight() / (rows + 1);

for (int y = 0; y < rows; y++)
{
for (int x = 0; x < cols; x++)
{
canvas.drawCircle((x + 1) * xStep, (y + 1) * yStep, 20, pDot);
canvas.drawLine((x + 1) * xStep, (y + 1) * yStep, (rows - 1) * (2+xStep), (y+1) * (yStep), pDot);
//canvas.drawLine((x -1) * xStep, (y -1) * yStep, (x-1) * xStep, (y+1) * yStep, pDot);
canvas.drawLine((x - 1) * xStep, (y +1) * yStep, (x-1) * (xStep), (cols+1) * (1+yStep), pDot);
// canvas.drawLine(startX, startY, stopX, stopY, paint)
// canvas.drawBitmap(bd,canvas.getHeight()/(rows+1), canvas.getWidth()/(cols+1), pDot);
}
}
}
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

最佳答案

我仍然保存了这个项目。只需对 for 循环添加一些内容:

for (int y = 0; y < rows; y++)
{
for (int x = 0; x < cols; x++)
{
canvas.drawCircle((x + 1) * xStep, (y + 1) * yStep, 20, pDot);

if (y == 0)
{
canvas.drawLine((x + 1) * xStep, yStep, (x + 1) * xStep, rows * yStep, pDot);
}
}

canvas.drawLine(xStep, (y + 1) * yStep, cols * xStep, (y + 1) * yStep, pDot);
}

关于android - drawLine() 方法未正确绘制线条 (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22727246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com