2017-03-19 5 views
1

enter image description hereAndroidでRegionでXを指定すると最大のYポイントを見つける方法を教えてください。

私は仮想ルーラーを画面に描いています。私は、タッチイベントが成長した矩形内で発生すると、上の青い線のような直線を描くことができるようにしたい。タッチは100%ストレートではないため、動きは赤い線のように見えます。そのため、近くのすべてのタッチイベントを聴くための四角形を設定してから、青い線を描きます。

私は現在、タッチもmRegions.contains(x,y)によって茶色の長方形内に起こるならば、私はチェック

mRulerRect.set(mRulerCenter.x - mRulerBitmap.getWidth()/2, 
       mRulerCenter.y - mRulerBitmap.getHeight()), 
       mRulerCenter.x + mRulerBitmap.getWidth()/2, 
       mRulerCenter.y); 
mPath.addRect(mRulerRect, Path.Direction.CCW); 
mRulerMatrix.setRotate(mRulerAngle, mRulerCenter.x, mRulerCenter.y); 
mPath.transform(mRulerMatrix); 
mRegions.setPath(mPath, new Region(mRulerRect)); 

を持っています。タッチ検出のためにこれまで完璧に動作しますが、私が今問題としているのは直線を描く方法です。私はXポイントを修正してYを計算しようとしました。水平から垂直に向かうときに、ルーラーが水平であり、非常に奇妙な動作を開始すると、正常に動作します。私はこれをどのように達成するか考えていません。助けてください!ありがとうございました。あなたが知っている

+0

である本当に問題ではありませんその茶色の矩形の中にあるタッチ座標を取得し、そこから通過して、ルーラーに平行な線を描きたいですか? – lelloman

+0

@lellomanはい!それは正しいですが、移動イベントは赤い線のように起こる可能性があるので、どのようにしてルーラーに平行な青い線を描くことができますか? – user1865027

答えて

1

物事:あなたは線の角度がmRulerAngle あり、その点

  • 通過描きたい

    • その茶色の矩形の中心がmRulerCenter.x, mRulerCenter.y
    • あるライン

      要素を1つだけ欠落しています。つまり、描画する線の長さです。それはおそらく、定規の幅の一部になるだろうし、今mRulerRect.width() * someFactor

      を計算することは非常に容易である必要があり、我々はスタートラインの終わりであるかを知りたい、我々は三角関数

      とそれを計算することができます
      float halfLineLength = mRulerRect.width() * someFactor; 
      float startAngle = (float) Math.toRadians(mRulerAngle); 
      float endAngle = (float) Math.toRadians(mRulerAngle + 180); 
      
      float startX = mRulerCenter.x + (float) Math.cos(startAngle) * halfLineLength; 
      float startY = mRulerCenter.y + (float) Math.sin(startAngle) * halfLineLength; 
      
      float endX = mRulerCenter.x + (float) Math.cos(endAngle) * halfLineLength; 
      float endY = mRulerCenter.y + (float) Math.sin(endAngle) * halfLineLength; 
      

      、その後(ENDX、ENDY)に(startxを、startYと)から、あなたの線を引く、実際には、私は問題を理解していない開始し、これが最後

  • +0

    ユーザーが触れたx、yポイントをどこに差し込むことができるのか分かりませんか? – user1865027

    +0

    私が投稿したコードは、その中心が茶色の矩形の中央にある画像の青い線を描くことです。あなたはラインの中心をタッチに対応させたいですか? – lelloman

    +0

    私はルーラーの幅と高さを持っていると仮定します。ルーラー画像の上に青い線を描くことは可能ですか? – user1865027

    関連する問題