![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| MaxB |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 10.2.2004 Где: Украина, Одесса Репутация: нет Всего: 1 |
Помогите есле возможно. А если не возможно скажите, что не возможно. Есть контекст устройства CDC dc. В GDI есть методы MoveTo(x1,y1) и LineTo(x2,y2) они отображает линию. Если dc связан с окном, то отбразится отрезок с координатами начала (x1,y1) и конца (x2,y2). В результате выполнения методов, вычисляются все точки которые лежат на отрезке и рисуются на экране. Можно ли вытащить эти точки?
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Как именно вытащить?
Хотя какая разница: всё равно никак нельзя Но ты их сам можешь вычислить:
Пробегаешь все x от x1 до x2 и получаешь y всех точек. Или не подходит? Это сообщение отредактировал(а) Дрон - 7.3.2004, 00:27 -------------------- Да. Именно так. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
При выполнении GDI-функций все их результаты сразу же отрисовываются на контексте устройства, нигде не "задерживаясь", поэтому отследить координаты каждой линии, каждого пиксела - невозможно.
Но есть способ сделать это, используя метафайлы. Создать не простой контекст устройства, а контекст метафайла - CMetaFileDC. Им можно пользоваться так-же, как и обычным контекстом (MoveTo, LineTo etc.), но все эти операции будут происходить на уровне запоминания, что и куда было проведено, нарисовано и пр. - без фактической отрисовки. Когда весь необходимый набор операций будет закончен, можно закрыть метафайл, и: - проиграть метафайл на любой контекст устройства, причём можно делать сколько угодно раз (т.е. метафайл - "многоразовый") - пробежаться по метафайлу, и выцепить например все вызовы TextOut, LineTo и т.п., с помощью функции EnumMetaFile(Ex). -------------------- ![]() |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
З.Ы. если просто нужны все точки, нарисованные "только что", то можно поступить вот так: 1) сохранить текущий битовый массив в буфере 2) выполнить Move/LineTo 3) получить обновлённый битовый массив, и XOR-ом найти изменившиеся точки -------------------- ![]() |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
MaxB, в GDI есть такая функция LineDDA, она при отрисовке линии для каждого пиксела вызывает пользовательскую callback функцию LineDDAProc, в кот. передаются в том числе и координаты пиксела. Можно, например, рисовать пиксел через один и т.п. Подробности в MSDN.
Возможно, это то, что тебе нужно. |
|||
|
||||
| OlegsDP |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 25.2.2004 Репутация: нет Всего: 1 |
To MaxB
А для чего Вам надо знать координаты точек? Какая у Вас задача? Может быть, есть альтернативные решения? |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
если я правильно понял то надо выводить линию которая не выходит за пределы определённого прямоугольника. если комуто надо прога могу подкинуть.
-------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Please, как загнать битмапу из файла в указатель на void
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Уже не надо!
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |