Re[2]: Очистить Canvas(прозрачный фон)
От: Аноним  
Дата: 03.12.04 10:11
Оценка:
Здравствуйте, byterus, Вы писали:

B>Здравствуйте, Аноним, Вы писали:


B>Все правильно, нужно вызывать Invalidate, чтобы родитель перерисовал задний план,


Спасибо. Плучилось, но все равно не так. Я вызываю Invalidate родительсокго окна через Parent.Invalidate, происходит постоянное моргание когда я навожу мышку. Подбные контролы(к которым я стремлюсь) так не моргают.
Я понял, что прорисовывается все окно, поэтому вызываю API-функцию InvalidateRect в которую передается дискриптор окна и прямоугольник для очистки. И опять-таки все наполовину. Дейтсивтельно форму не мрогает, но зато когда назимаю на конопку, она сзчезает и появляется только когда я начинаю двигать мышью по кнопке.
Как с этим оборость?

B>А рамку лучше рисуй DrawFocusRect, естественно она пропадает после второго раза прорисовки на себя, она же использует инверсию, так что нужно рисовать один раз чтобы появилась и второй чтобы исчезла, но если ты будешь вызывать Invalidate второго раза не потребуется.


Приходиться использовать свою процедуру, так как мне нужно обрисовать не пунктиром, а точками необходимую область. А стандартный стиль Dot почему рисует коротким пунктиром. Но это ничего. Я так понял, что перерисова по нечетным разам была из-за того что не перерисовывался холст родительской формы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.