0

これが私の問題です:

を使用しXClearAreaて、ウィンドウの背景のピックスマップで画面の領域をクリアします。これは、グラフィック コンテキストの前景色が BLACK になっています。

への呼び出しに続いて、 APIXClearAreaを使用して線を描画しようとします。XDrawLineここでは、フォアグラウンド RED を持つ GC を使用します。

XDrawLineただし、 への呼び出しが黒い線を引いていることに気付きました。言い換えると、XClearAreaへの呼び出しで新しい GC を明示的に指定しているにもかかわらず、 Foreground を RED にすることはできませんXDrawLine

なぜこれが起こるのか、そしてこの問題をどのように修正できるのかについて、誰かが光を当てることができますか.

どんな助けでも大歓迎です。ありがとう。

編集:私の問題を示すためにいくつかのコードを追加させてください。キーボードの矢印キーを使用して移動できる描画領域に線を実装しようとしています。これが私がやろうとしていることです:

  • 線を引きます。
  • ラインをクリックして赤くします。
  • 矢印キーを使用して、線を左右に移動します。
  • 矢印キーを使用すると、線は赤のままです。

矢印キーを使用すると、XClearAreaAPIを使用して前の行をクリアしようとしますが、

XClearArea(XtDisplay(Widget,XtWindow(Widget),0, 0,WINDOW_WIDTH, WINDOW_HEIGHT, True);

背景の PIXMAP は前景が黒です。

これが完了したら、XDrawLine関数を使用して線を描画しようとします:

XDrawLine(XtDisplay(Widget, XtWindow(Widget),RED_GC,x1, y1,x2,y2);

ここでは、フォアグラウンドを RED に設定できる新しい RED_GC を使用しようとしています。

ただし、システムはまだ前景を黒として線を引いているようです。

残念ながら、OpenMotif Window Manager を使用して Xlib を操作する必要があります。GTK/QT が使えません。

よろしくお願いします。

4

1 に答える 1

0

完全なコードなしで何を伝えればよいかわかりませんが...

XtDisplay 呼び出しは 1 つのパラメーターのみを受け入れます。

それで

XClearArea(XtDisplay(ウィジェット,XtWindow(ウィジェット),0, 0,WINDOW_WIDTH, WINDOW_HEIGHT, True);

おそらく次のようになります。

XClearArea(XtDisplay(ウィジェット),XtWindow(ウィジェット),0, 0,WINDOW_WIDTH, WINDOW_HEIGHT, True);

XDrawLine() も同様

また、電話したほうがいいかもしれません

XSetForeground (XtDisplay(Widget), YourGC, YourRedpixel);

前景を設定します。(でも、もしかしたらあなたは…)

于 2014-02-21T16:58:55.857 に答える