Cтраница 1
Начало области просмотра определяет положение текста или графики относительно окна. Обычно точка с координатами ( 0, 0) появляется в левом верхнем углу окна представления, а точка с координатами ( 50, 100) - на расстоянии 50 пикселей от левого края окна и 100 пикселей от его верхнего края. Если прокрутить документ вниз на 75 пикселей, то MFC скорректирует начало области просмотра так, что обе точки появятся в окне на более высоких позициях. Точка с координатами ( 0, 0) не будет видна ( все, что выводится за пределы окна, отсекается, попросту - отбрасывается), а точка с координатами ( 50, 100) будет выведена на расстоянии 25 пикселей от верхней границы окна. На рис. 13.2 показано окно представления до и после прокрутки. [1]
После того как MFC скорректирует начало области просмотра, функция OnDraw перерисует линии в окне представления, задавая те же координаты для каждой линии. Из-за изменения начала области просмотра линии будут выведены с учетом прокрутки. Привлекательность такой системы состоит в том, что не нужно модифицировать функцию OnDraw для работы с полосами прокрутки; операции прокрутки реализуются автоматически. [2]
При прокрутке документа MFC корректирует начало области просмотра, которое определяет положение текста или графики в окне представления. [3]
Объект контекста устройства передается в функцию CScrollView: : OnPrepareDC для коррекции начала области просмотра прокрученного документа. [4]
Для поддержки прокрутки не нужно изменять функцию OnDraw. Начало области просмотра для объекта контекста устройства, передаваемого в функцию OnDraw, уже скорректировано, вследствие чего текст или графика автоматически выводится в окне. [5]
После того как MFC скорректирует начало области просмотра, функция OnDraw перерисует линии в окне представления, задавая те же координаты для каждой линии. Из-за изменения начала области просмотра линии будут выведены с учетом прокрутки. Привлекательность такой системы состоит в том, что не нужно модифицировать функцию OnDraw для работы с полосами прокрутки; операции прокрутки реализуются автоматически. [6]
![]() |
Логические координаты в сравнении с координатами устройства ( документ прокручен вниз на 75 пикселей. [7] |
Объект контекста устройства, передаваемый функции onDraw, уже имеет правильно установленное начало области просмотра, скорректированное для прокрученного рисунка. При создании собственного объекта контекста устройства его необходимо передать функции OnPrepareDC для коррекции начала области просмотра. [8]
Рассмотрим более подробно способ поддержки прокрутки в классе CScrollView. Однако при прокрутке документа с помощью полосы прокрутки MFC корректирует значение атрибута, называемого началом области просмотра. [9]
Начало области просмотра определяет положение текста или графики относительно окна. Обычно точка с координатами ( 0, 0) появляется в левом верхнем углу окна представления, а точка с координатами ( 50, 100) - на расстоянии 50 пикселей от левого края окна и 100 пикселей от его верхнего края. Если прокрутить документ вниз на 75 пикселей, то MFC скорректирует начало области просмотра так, что обе точки появятся в окне на более высоких позициях. Точка с координатами ( 0, 0) не будет видна ( все, что выводится за пределы окна, отсекается, попросту - отбрасывается), а точка с координатами ( 50, 100) будет выведена на расстоянии 25 пикселей от верхней границы окна. На рис. 13.2 показано окно представления до и после прокрутки. [10]
![]() |
Логические координаты в сравнении с координатами устройства ( документ прокручен вниз на 75 пикселей. [11] |
Чтобы преобразовать координаты устройства в логические, необходимо использовать контекст устройства, который относится к данному окну. Вспомните: объект контекста устройства управляет выводом информации в окно, сохраняет атрибуты режима рисования и предоставляет функции для отображения текста или графики. Первый добавленный оператор создает объект контекста, относящийся к окну представления. Второй - вызывает функцию OnPrepareDC класса CScrollView, корректирующую начало области просмотра на основании текущей позиции прокрученного рисунка. [12]
![]() |
Логические координаты в сравнении с координатами устройства ( документ прокручен вниз на 75 пикселей. [13] |
Чтобы преобразовать координаты устройства в логические, необходимо использовать контекст устройства, который относится к данному окну. Вспомните: объект контекста устройства управляет выводом информации в окно, сохраняет атрибуты режима рисования и предоставляет функции для отображения текста или графики. Первый добавленный оператор создает объект контекста, относящийся к окну представления. Второй - вызывает функцию OnPrepareDC класса CScrollView, корректирующую начало области просмотра на основании текущей позиции прокрученного рисунка. Третий оператор вызывает функцию DPtoLP класса CClientDC, преобразующую координаты курсора, сохраненные в параметре point, из фактических в логические для объекта контекста по отношению к новому ( установленному) началу области просмотра. Если координаты, хранящиеся в параметре point, преобразованы в логические, то их уже можно использовать для рисования линии. [14]