Мне нужно рисовать, перемещать, изменять фигуры (прямоугольники, круги и т. Д.) На холсте (представлен стандартным «Статическим контролем»).Все операции рисования реализуются стандартными функциями GDI.
Я понял это так:
(пример для движущаяся фигура , другие операции используют тот же принцип)
...
// Before any actions set foreground mix mode:
SetROP2(hdc_, R2_NOTXORPEN);
...
void OnMouseDown(...)
{
SelectShapeUnderCursor();
}
void OnMouseMove(...)
{
...
DrawShape(old_points); // Eraise shape at old position (drawing with the same pen's color, see description of R2_NOTXORPEN mode)
DrawShape(new_points); // Draw shape at new position
...
}
void OnMouseUp(...)
{
DrawShape(new_points); // Final draw shape
}
В этом случае формы правильно движутся и меняются.Но большая проблема - плохие цвета фигур.Например, когда ручка имеет зеленый цвет, форма имеет зеленый цвет на белый фон и красный на черный фон.Это нормальное поведение для режима микширования R2_NOTXORPEN.
Но я хочу, чтобы фигуры были того же цвета, что и перо.Я должен отказаться от режима микширования R2_NOTXORPEN, но как правильно реализовать такие операции, как перемещение, изменение формы?Я могу использовать GDI +, если необходимо.