1

現在、Avant Window Navigator の「Lucido モード」コードを修正して、区切り線の曲線を対角線に置き換えようとしています。

曲線を制御する (Cairo) コードの一部は、GitHub の次のファイルの 330 行から 334 行に存在します

{ /* Oblique */
  gfloat xm = ( *xs + xf ) / 2.0;
  cairo_curve_to (cr, xm, *ys, xm, yf, xf, yf);
}

目標を理解しやすくするために、現在の AWN Lucido の外観と、私が希望する外観のイメージを以下に示します。

例

セパレーターをまっすぐな対角線にするためのコードを正しく取得するのを手伝ってくれる人がいれば、とても感謝しています。

お時間をいただきありがとうございました:)

4

1 に答える 1

3

Cairo を使用した曲線の描画に関する情報は、ここにあります。

4 ポイントのベジエ曲線は次のようになります。

ここに画像の説明を入力

cairo_curve_toの現在のペン位置を取得しp0、その引数は次の 3 つのポイントです。

cairo_curve_toしたがって、各引数に同じ点を渡すことで直線を描くことができます。これはちょっと無駄ですが、おそらくあなたにとって深刻な問題ではありません。

_line_from_to両方の引数に終了位置を渡すと、必要に応じて直線を描くように縮退するように見えます。たとえば、その関数の呼び出しが に_line_from_to(cr, &x, &y, x2, y2)変更された場合_line_from_to(cr, &x2, &y2, x2, y2)

または、 のコードを次のように変更し_line_from_toます。

static void 
_line_from_to ( cairo_t *cr,
                gfloat *xs,
                gfloat *ys,
                gfloat xf,
                gfloat yf)
{
  cairo_line_to (cr, xf, yf);
  *xs = xf;
  *ys = yf;
}

の詳細については、この例cairo_curve_toを参照してください。

于 2013-03-13T00:55:33.247 に答える