【问题标题】:How to set a starting point using path () in onDraw () using canvas..?如何使用画布在onDraw()中使用path()设置起点..?
【发布时间】:2014-01-15 17:11:54
【问题描述】:

我正在使用Paint () 制作一个应用程序,例如用于自动裁剪的驱动轴选择Path (),然后我制作了这个屏幕..

但我的问题是我的起点从 0 位置 TOP_LEFT_CORNER X 和 Y 轴开始

使用这个 x 和 y 坐标,我制作了一个这种类型的矩形,但我需要使用这个坐标的这种类型的输出..

{"TOP_LEFT_X_AXIS":"43", "TOP_LEFT_y_AXIS":"278",

"TOP_RIGHT_X_AXIS":"532", “TOP_RIGHT_y_AXIS”:“300”}}

"BOTTOM_RIGHT_X_AXIS":"510", "BOTTOM_RIGHT_y_AXIS":"614",

"BOTTOM_LEFT_X_AXIS":"45", "BOTTOM_LEFT_Y_AXIS":"597",

需要这种类型的输出看这个图片..

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    path = new Path();

    path.lineTo(x1, y1);
    path.lineTo(x2, y2);
    path.lineTo(x3, y3);
    path.lineTo(x4, y4);
    canvas.drawPath(path, currentPaint);

}

编辑:- 2014 年 1 月 1 日

现在我成功地制作了矩形现在我想裁剪那部分图像并在另一个图像视图上设置任何关于此的想法..

编辑:- 1-07-2014

现在我想在角落画一个圆圈告诉我你有什么想法..

【问题讨论】:

  • 您是否尝试过使用 drawRect(...) 来绘制矩形?顺便说一句,您如何获得坐标?你有触摸监听器吗?
  • @Kumiho 请看我的画线代码
  • 你从哪里得到坐标 (x1, y1, x2, ...),尤其是 x1 和 y1?一个快速而肮脏的解决方案可能是设置 x1=top_right_corner_X 和 y1=bottom_left_corner_Y 但这不是你真正应该做的。
  • @Kumiho 这个数据来自 webservices {"TOP_LEFT_X_AXIS":"43", "TOP_LEFT_y_AXIS":"278", "TOP_RIGHT_X_AXIS":"532", "TOP_RIGHT_y_AXIS":"300"}}" BOTTOM_RIGHT_X_AXIS":"510", "BOTTOM_RIGHT_y_AXIS":"614", "BOTTOM_LEFT_X_AXIS":"45", "BOTTOM_LEFT_Y_AXIS":"597",
  • 我明白了。在调用 path.lineTo(...) 之前尝试调用 path.moveTo (x1,y1)。我不熟悉路径,但您可以查看文档developer.android.com/reference/android/graphics/Path.html

标签: android image-processing path android-canvas paint


【解决方案1】:

试试这个:

@Override
protected void onDraw(Canvas canvas) {
   super.onDraw(canvas);
   path = new Path();

   path.moveTo(x1, y1);        // this should set the start point right

   //path.lineTo(x1, y1);    <-- this line should be drawn at the end of course,sorry
   path.lineTo(x2, y2);
   path.lineTo(x3, y3);
   path.lineTo(x4, y4);
   path.lineTo(x1, y1); 
   canvas.drawPath(path, currentPaint);

}

【讨论】:

    【解决方案2】:

    请试试这个..希望它对你有用。

    canvas.drawPath(path, currentPaint);
    canvas.drawCircle(x1, y1, 8, currentPaint);
    canvas.drawCircle(x2, y2, 8, currentPaint);
    canvas.drawCircle(x3, y3, 8, currentPaint);
    canvas.drawCircle(x4, y4, 8, currentPaint);
    

    使用此代码获取输出...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 2013-10-07
      • 2012-12-30
      • 1970-01-01
      • 2015-02-07
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多