Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.108.203] |
|
Сообщ.
#1
,
|
|
|
Нужна XOR-ная точка. Делаю её так
MoveToEx(m_dc, x, y, NULL); LineTo(m_dc, x + 1, y); Можно ли это упростить? 3apaнee благодарю. |
Сообщ.
#2
,
|
|
|
Теоретически, Rectangle
А чем SetPixel не устроил? |
Сообщ.
#3
,
|
|
|
По сути нельзя. Рассуждайте чётко и логично, это просто:
1.Процесс не массовый, а единичный, потому всякие циклы (машинная обработка ячеек) не здесь. 2.Нужно не просто поставить, а поменять. 3.Чтобы поменять, надо знать, что меняем. 4.Надо опросить изменяемое(GetPixel), проанализировать(XOR) и изменить(SetPixelV). П.С. да, они (WinAPI-писатели) могли бы написать отдельную функцию, коя XORит точку, но это была бы жутко редкая операция, которых можно тысячи придумать, а кол-во функций в DLL и так полно. |
Сообщ.
#4
,
|
|
|
Всем спасибо. Проверил, Rectangle не работает.
::Rectangle(m_dc,x,y,x+1,y+1) - ничего не рисует, а ::Rectangle(m_dc,x,y,x+2,y+1) - рисует уже две точки. А спросить содержимое и проXORить это, извините, очень сложно, XOR задаётся общей функций - как быть, если сменится? Придётся надавить на эстетику и оставить две исходные строчки. Только несколько дней разбираюсь WinAPI... |
Сообщ.
#5
,
|
|
|
А как на счёт FillRect()?
Цитата The FillRect function fills a rectangle by using the specified brush. This function includes the left and top borders, but excludes the right and bottom borders of the rectangle. Цитата es2025 @ Проверил, Rectangle не работает. Кстати, вы учли, что для отрисовки ректа в этом случае используется текущий Pen для обводки, и текущая Brush для заливки. Попробуйте установить пустой Pen (GetStockObject(NULL_PEN)) и ещё раз протестировать. |
Сообщ.
#6
,
|
|
|
Сорри, если что не понял... Малость расслабился уже
MoveToEx() - понятно, сдвинули указатель в некую точку LineTo() - от неё провели линию И куда дальше? --- Из граблей - иногда даже App->ProcessMessages() не сдвигает курсор. Но зато срабатывает спарка SetCursorPos(x + 1, y) -> SetCursorPos(x, y) (имена WinAPI-функций уточните, суть понятна). Т.е. чисто принудительно надо курсор дёрнуть. --- ЗЫ - ещё раз сорри. Говорили мне модеры в Ханое - Выпил - за форум не садись! |
Сообщ.
#7
,
|
|
|
Цитата artsb @ А как на счёт FillRect()? Сначала нужно прямоугольник сделать! Цитата artsb @ Попробуйте установить пустой Pen (GetStockObject(NULL_PEN)) и ещё раз протестировать. Перо оно не только для точки уставливается... Цитата #SI# @ И куда дальше? Всё - это и есть нужная точка, но хотелось бы одной командой как в X11 (XDrawPoint). Цитата #SI# @ зато срабатывает спарка SetCursorPos(x + 1, y) -> SetCursorPos(x, y) Ничего не понял! Про SetCursorPos написано: "This function moves the cursor to the specified screen coordinates". И как этим можно нарисовать точку? Как там в Ханойская башня? Стоит? |
Сообщ.
#8
,
|
|
|
Цитата es2025 @ Я - тоже! Что надо получить в результате некоторых телодвижений (хотя бы и руками по клаве)?.Ничего не понял! ЗЫ - таки от чего Цитата es2025 @ И что под оной подразумевается?Нужна XOR-ная точка. Без обиды - но тут рядом соседу объясняли, что тригонометрия в градусах - это именно для него, для коллеги. Все остальные работают с радианами... Не уверен, шо он понял... |
Сообщ.
#9
,
|
|
|
С точкой всё ясно. Помогите, если кто сможет по схожей проблеме. Есть ли в WinAPI хоть какой-то способ выводить XORный текст, т.е. чтобы на разном фоне цвет символов был разный. Например, печатаем строку "пример" и получаем разноцветные буквы.
|
Сообщ.
#10
,
|
|
|
В OpenGL - даром (является ли это частью WinAPI?), просто GDI - не помню. Честно скажу, получается очень плохо. Глаза лишь маятся. Сделайте одноцветно с каймой - много лучше.
|