Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция по Windows.RectVisible странно ведет себя / 6 сообщений из 6, страница 1 из 1
05.04.2018, 20:06
    #39626366
V.Borzov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
Здравствуйте,

функция Windows.RectVisible - процедура, показывает, пересекается ли подсовываемый ей в параметрах Rect с... с кем? с canvas.cliprect? Если так, то почему-то частенько дает утвердительный ответ на два не пересекающиеся региона. Про отрицательный ответ на пересекающиеся - такого не замечал. С кем она сравнивает? Сижу, пошагово разглядываю функцию Paint стандартного грида, и наткнулся на такое вот безобразие.

Спасибо.
...
Рейтинг: 0 / 0
05.04.2018, 20:55
    #39626390
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
...
Рейтинг: 0 / 0
05.04.2018, 21:01
    #39626392
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
V.Borzov,
Еще учти, что при двойной буферизации реальный ClipRect игнорируется.
...
Рейтинг: 0 / 0
06.04.2018, 14:38
    #39626840
V.Borzov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
rgreat https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd162908(v=vs.85).aspx
Получается тогда, описание функции в Дельфи и ее использование так

if (Where.Right > Where.Left) and RectVisible(Canvas.Handle, Where) then
begin

не соответствует ее правильному описанию? Возвращаться может много значений. И что там вернулось в результате (пример взят из модуля grids), еще не известно. Ну, то есть, доверять коду в таком виде нельзя, получается....

Соколинский БорисЕще учти, что при двойной буферизации реальный ClipRect игнорируется.
То есть вся прорисовка происходит каждый раз заново? но ClipRect все равно определен, даже если DoubleBuffered. Проверить пошагово только трудно, ибо на экране не увидишь результатов.
...
Рейтинг: 0 / 0
06.04.2018, 15:01
    #39626852
Соколинский Борис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
V.BorzovТо есть вся прорисовка происходит каждый раз заново?Вся вписанная в экран часть окна.

V.Borzov но ClipRect все равно определен, даже если DoubleBuffered. Он тупо соответствует всему см. выше.
Для пошаговой проверки есть специальное средство, называется "лог".
...
Рейтинг: 0 / 0
06.04.2018, 15:56
    #39626891
V.Borzov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция по Windows.RectVisible странно ведет себя
Соколинский БорисДля пошаговой проверки есть специальное средство, называется "лог".
Лог, это как? Хочу посмотреть, как грид прорисовывает содержимое своих ячеек, пошагово. при DoubleBuffered = false это легко рассматривать, например.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Функция по Windows.RectVisible странно ведет себя / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]