tizen wearable 2.3.1
のアプリケーションを書き始めました。私は、動的に成長する輻射線を円弧(それが円になるまで成長する)に追加したいと考えました。私のサークルはcairo2d
を使って作成されています。円上で動的に成長する勾配
私は、キュービックベジェ曲線の近似について、this articleに従っています。私はいくつかの進歩を遂げました。私は円の前半のための動的なグラデーションを持っています - しかし、グラデーションは私のX1,Y1
から始まらませんが、それは中心から成長するようです。
最初のステップは、私は割合に基づいて角度をカウントし、変数を初期化し、(SO中心が円の中央にあり、X,Y
が適切な軸である)カイロの中心を移動させ、回転させることである。
double current_angle= (2 * M_PI * percent)/100;
double R = 74;
double K = 0.5522847498; // - magic number from article
// start and end point
double X1 = 0;
double Y1 = R;
double X4 = R * sin(current_angle);
double Y4 = R * cos(current_angle);
// bezier points
double X2 = X1 + K * R * sin(current_angle);
double Y2 = Y1 - K * R * cos(current_angle);
double X3 = X4 + K * R * sin(current_angle);
double Y3 = Y4 + K * R * cos(current_angle);
が続いて終わりに、私は私のパターンを作成して、私の弧を描く:
Evas_Coord_Point P1 = {X1, Y1};
Evas_Coord_Point P2 = {X2, Y2};
Evas_Coord_Point P3 = {X3, Y3};
Evas_Coord_Point P4 = {X4, Y4};
cairo_pattern_t *dynamic_pattern = cairo_pattern_create_mesh();
cairo_mesh_pattern_begin_patch (dynamic_pattern);
cairo_mesh_pattern_move_to (dynamic_pattern, P1.x, P1.y);
cairo_mesh_pattern_curve_to (dynamic_pattern, P2.x, P2.y, P3.x, P3.y, P4.x, P4.y);
cairo_mesh_pattern_set_corner_color_rgb (dynamic_pattern, 1, 1, 1, 1);
cairo_mesh_pattern_set_corner_color_rgb (dynamic_pattern, 0, 0, 1, 0);
cairo_mesh_pattern_end_patch (dynamic_pattern);
cairo_set_source(cairo, dynamic_pattern);
cairo_arc(cairo, 0, 0, cairo_circle_radius, 0, current_angle);
cairo_stroke(cairo);
と最初の数パーセント値のために、私は何も得ることはありませんが、その後12%の周りにそれを描き始め、中に展開します双方向。私は間違って何をしていますか?
このグラフィックスは私が達成したいことを示しています(私の非常にプロフェッショナルなイメージには申し訳ありませんが、それは私ができる最高のものです)。
編集:私はいくつかのテストを行なったし、それは[OK]を、私は円錐勾配を作成する方法を発見し、少しひねりを私が作るために管理角度> = 45
赤、黄、青のマークは何ですか? –
緑と赤が始点と終点になっているはずですが、黄色はグラデーションですが、大きすぎます。基本的に私はコニカルグラデーションを探しています。 –