Из того, что я помню, когда я взглянул на исходный код Windows, Stretchblt был написан летним практикантом в середине 1980-х и никогда не был исправлен. Один и тот же неэффективный код был распространен на все версии Windows. На некоторых мобильных устройствах Windows StretchBlt будет использовать аппаратное ускорение 2D, но не на настольных Windows. Используйте DirectDraw на окнах рабочего стола, чтобы использовать аппаратное ускорение 2D и получить быстрый блиц. В моих продуктах для настольных видеоигр у меня есть собственный код stretchblt, который растягивает биты в буфере памяти, а затем вызывает BitBlt, чтобы скопировать их на дисплей, и это значительно быстрее, чем простой вызов StretchBlt.
То, что я считаю основной причиной сбоев StretchBlts, заключается в том, что код полностью игнорирует скорость кэшированной / некэшируемой памяти и перебивает кэш при растяжении изображения.