|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 14, 2003 17:53:03 подскажите плиз, как сделать сабж? есть хэндл битмапа, какими функциями можно вывести битмап под углом в 30 градусов? |
|
|
Дата: Авг 14, 2003 19:42:32 PlgBlt |
|
|
Дата: Авг 14, 2003 22:40:00 Спасибо! Буду разбираться... |
|
|
Дата: Авг 15, 2003 07:29:43 На сколько я знаю, PlgBlt даёт разворот только на 90, 180 и т.д. градусов. Я с его помощью делал отражение битмапы (flipping). Можно по оси X или Y. Ещё он позволяет маскировать части изображения. Но в SDK о нём ясно сказано: Scaling, translation, and reflection transformations are allowed in the source device context; however, rotation and shear transformations are not. (Масштабирование, преобразования и отражения позволены в контексте-источнике, однако повороты и смещения - нет.) Я могу посоветовать dz 3BePIOra поискать по Нету "bitmap rotation". Есть много материалов и способов это реализовать. Я этим в плотную не занимался ещё. Просто видел, что есть. Всё от COM объектов до расчёта координат собственными ручками. |
|
|
Дата: Авг 16, 2003 10:58:49 В расчёте координат ручками нет ничего сложного. Выходной буфер заполняешь последовательно, координаты во входном битмапе вычисляешь простым прибавлением заранее вычисленного шага. Вычисления вести в фикседпоинте. Шаг по иксу и по игреку для поворота - это просто синус и косинус от угла. :) В общем, проще некуда. Зато простора для оптимизации и всяких наворотов - масса. То же масштабирование - это просто домножение шага по иксу и игреку на коэффициент. Если нужно не заполнение всего выходного буфера повёрнутой текстурой, а именно вывод одного повёрнутого битмапа, то из соображений эффективности можно не проверять на каждый пиксел выходного буфера попадает ли он в повёрнутый битмап, а просчитать стороны битмапа и прорисовать только то, то внутри. Тогда это будет уже настоящий текстурмаппинг. ;) А ещё, у того же GDI+, если я ничего не путаю, были готовые функции для поворотов изображений. Во всяком случае, функция GdipRotateTextureTransform в доках фигурирует. А если тебе это надо делать быстро и часто, то лучше посмотреть в сторону каких-нибудь аппаратно ускоренных апи. Загнав битмап в текстуру, можно будет рисовать его в любом виде с приличной скоростью и дополнительными маленькими радостями типа фильтрации или альфаканала. |
|
|
Дата: Авг 17, 2003 09:41:26 · Поправил: dz 3BePIOra Понимаете, я хочу графические часы написать со стрелочками по кругу, но не знаю как поворачивать стрелки. Можно, конечно, красиво нарисовать функциями ГДИ, но это ИМХО изврат... Может подскажете, как по другому сделать? |
|
|
Дата: Авг 23, 2003 15:44:49 Здесь несколько страниц. Может будет полезно. Или ссылки. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.074 |