Преобразование координат

Тема в разделе "WASM.WIN32", создана пользователем gloomyraven, 26 янв 2009.

  1. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    В винде есть функции, которые сжимают/растягивают битмап.
    Например: StretchBlt, AlphaBlend.
    Функциям передается hdc источника и назначения, координаты прямоугольника источника и назначения.
    Если прямоугольники не совпадают по размеру, то изображение сжимается или растягивается.
    Так вот, как вычислить ДО (ну или после)) выполнения функции какие координаты будет иметь произвольная точка из источника в назначении. Попробую изобразить наглядно (см. вложение).
    Думал использовать коэффициенты умножения/деление, но не факт, что винда именно так и нарисует.
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    мне кажется что
    вполне подойдут... ну во всяком случае с погрешностью в пиксель - два))))
     
  3. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Rel
    в том-то и дело, что погрешность не допустима...
    Нужно тютельку в тутельку.
    Дизасмить gdi32:StretchBlt че-то не особо охота...
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    gloomyraven
    используйте не осевой алгос. заодно и покачественнее будет
     
  5. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    _basmp_
    А можно по-подробнее?
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    ну раз погрешность не допустима, то видимо к этому все и идет... или ты в принципе можешь написать свой алгоритм маштабирования изображения... ну всмысле свою реализацию какого-нить алгоритма (поищи в интернете, наверняка есть инфа поэтому вопросу) и туда встроить уже свои преобразования координат... сложно канеш блин, но другого решения я не вижу, может ещё кто-нить что-нить предложит)))
     
  7. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Rel
    Все дело в том, что не моя программа выводит изображение и не моя масштабирует :)
    Мне нужно только знать новые координаты, в которых будут находится объекты
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    то есть фактически тебе нужен исходник StretchBlt))) или какой-то конкретной другой функции...
     
  9. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Rel
    :)
     
  10. gloomyraven

    gloomyraven Руслан

    Публикаций:
    0
    Регистрация:
    16 апр 2006
    Сообщения:
    288
    Адрес:
    Москва
    Ну... если вариантов пока нету, буду дизасмить...
    Будут результаты - отпишусь