2017-02-13 7 views
-1

私は画面の真ん中に円を描いていて、円の中心から上に向かって下に向かって左に、そして右に4行aを描きたいのですが、問題は、私が描いたリンク2対角のもの、縦1と横1、円の中心を通って横断するすべての - 私はあなたが4行をしたいdrawLineの座標

enter image description here

@Override 
protected void onDraw (Canvas canvas){ 
    super.onDraw(canvas); 
    int x = getWidth(); 
    int y = getHeight(); 
    int radius; 
    radius = 25; 
    Paint paint = new Paint() ; 
    paint.setStyle(Paint.Style.FILL); 
    paint.setColor(Color.BLACK); 
    canvas.drawPaint(paint); 
    paint.setColor(Color.WHITE); 
    canvas.drawCircle(x/2, y/2, radius, paint); 
    Paint paint1 = new Paint() ; 
    paint1.setStyle(Paint.Style.FILL); 
    paint1.setColor(Color.BLACK); 
    canvas.drawPaint(paint1); 
    paint1.setColor(Color.WHITE); 
    canvas.drawLine(x/2, y/2, x, y/2, paint1); 
    canvas.drawLine(x/2, y/2, -x, y/2, paint1); 
    canvas.drawLine(x/2, y/2, x/2, y, paint1); 
    canvas.drawLine(x/2, y/2, x/2, -y, paint1); 
} 
+0

だから、質問は何ですか? – Altoyyr

+0

@Altoyyr 4行の座標を入れたい – CamlX

+0

4行を描画したいですか?円の中心から1つ上に行く。円の中心から1つは下に行く。円の中心から左に1つ。円の中心から右に1つ。あれは正しいですか? –

答えて

0

その長さを定義することはできません。

まずは、円の中心を設定してみましょう:

int centerX = x/2; 
int centerY = y/2; 

はその後、ラインのための左、上、右、下のために、いくつかの補助変数を追加します。私たちは、少し余裕を追加し、その対角線の両端に余分な行の余地があるだろう。これらにより

int margin = 10; // Arbitrary value, modify as desired 
int top = 0 + margin; 
int bottom = canvas.getHeight() - margin; 
int left = 0 + margin; 
int right = canvas.getWidth() - margin; 

、我々は簡単に線を引くことができます。

// Vertical line. X coordinate = center, stretching from "top" to "bottom" 
canvas.drawLine(centerX, top, centerX, bottom); 

// Horizontal line. Y coordinate = center, stretching from "left" to "right". 
canvas.drawLine(left, centerY, right, centerY); 

// First diagonal line. Stretching from the top left corner to the bottom right corner. 
canvas.drawLine(top, left, bottom, right); 

// Second diagonal line. Stretching from the top right corner to the bottom left corner. 
canvas.drawLine(top, right, bottom, left); 

を今すぐ追加します小さな線分それは曲線のように見えるようにする:

int delta = 4; // Arbitrary value, determines how long the small lines will be. 
canvas.drawLine(top, left, top + delta, left - delta); 
canvas.drawLine(top, right, top + delta, right + delta); 
canvas.drawLine(bottom, left, bottom - delta, left - delta); 
canvas.drawLine(bottom, right, bottom - delta, right + delta); 

あなたはカーブではなく、鋭いよりも、丸みを帯びさせたい場合は、次の2つのオプションがあります。
最初はただtransparant Imageを作成し、キャンバスの上に置くことです。 1つの曲線のイメージを作成し、それをミラーリングして3つの他の曲線を得ることができます。
目はPath.cubicToを使用することですが、それはあなたが後で試してみたいことがありますものです。詳細については、this Stack Overflow answerで説明します。

+0

そして長さのために、私は円から4行を描きました、他の4つは、彼らは特定の曲線を持っている対角線ではありません – CamlX

+0

@AbbesChouokchou Hmは、 。カーブがシャープな「V」のように見える場合は、「left」、「right」、「top」および「bottom」の値を小さく設定して線を短くすることができます。その後、そこから少し余分な行を追加することができます。縦線の場合は –

+0

、長さを変更するにはどうすればよいですか? – CamlX