Искажение при StretchBlt

Тема в разделе "WASM.WIN32", создана пользователем cresta, 25 янв 2005.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    invoke StretchBlt,hDC,0,0,400,560,mDC,0,0,500,700,SRCCOPY



    Вот такое использование (уменьшение размера) приводит к искажению картинки. На ней появляются какие-то разводы (преимущественно красного цвета). Если картинку наоборот, растягивать, то искажений нет.

    Можно ли избавиться от такой неприятности?
     
  2. 83ham98er

    83ham98er New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    6
    Помоему, от это неприятности можно избавиться, только если поменять алгоритм уменьшения изображения. :)

    Используй бикубическую интерполяцию. Поможет :)
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    А можно чуть подробней? Что за бикубическая интерполяция?
     
  4. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    О, нащупал:

    invoke SetStretchBltMode,hDC,COLORONCOLOR

    и искажения исчезли :)
     
  5. 83ham98er

    83ham98er New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    6
    А вопрос про бикубическое интерполирование в силе?
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Ну да, конечно :)
     
  7. murtix

    murtix New Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    110
    Адрес:
    Russia
    Лови!!!

    Статья о бикубической интерполяции и процедура на дельфи тока м-е-е-едленная, но можно оптимизировать на асме чтоб не хуже фотошоповского работал, я собираюсь это сделать, но.....

    [​IMG] 1692939721__Bicubic.rar
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Ок, спасибо! Теперь придётся дельфи устанавливать :) А то я не настолько в нем ориентируюсь, чтобы в блокноте разобраться в этом .pas.