Вот моя проблема:
Я использую XClearArea
, чтобы очистить область экрана с растровым изображением фона окна. Цвет переднего плана ЧЕРНЫЙ для графического контекста.
После вызова XClearArea
я пытаюсь нарисовать линию, используя XDrawLine
API. Здесь я использую GC, у которого передний план КРАСНЫЙ.
Однако я заметил, что вызов XDrawLine
рисует черную линию. Другими словами, XClearArea
не позволяет мне превратить Foreground в RED , несмотря на явное указание нового GC в моем вызове XDrawLine
.
Может ли кто-нибудь пролить свет на то, почему это происходит и как эту проблему можно решить.
Любая помощь будет принята с благодарностью. Спасибо.
РЕДАКТИРОВАТЬ: Позвольте мне добавить КОД, чтобы показать мою проблему. Я пытаюсь реализовать линию в области рисования, которую можно перемещать с помощью клавиш со стрелками на клавиатуре. Вот что я пытаюсь сделать:
- Нарисуйте линию.
- Нажмите на линию, чтобы сделать ее КРАСНОЙ.
- Используйте клавишу со стрелкой, чтобы переместить линию влево или вправо.
- При использовании клавиши со стрелкой линия остается КРАСНОЙ.
Когда используется клавиша со стрелкой, я пытаюсь очистить предыдущую строку с помощью XClearArea
API,
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_GC, который может установить передний план на RED.
Тем не менее, кажется, что система по-прежнему рисует линию с черным цветом на переднем плане.
К сожалению, мне приходится работать с Xlib с помощью оконного менеджера OpenMotif. Я не могу использовать GTK/QT.
Заранее спасибо за вашу помощь.