Сообщение Re[42]: Еще от 17.06.2017 17:23
Изменено 17.06.2017 17:59 ononim
Re[42]: Еще
I>>А что здесь за сложность ? В конце девяностых-начале нулевых был ажно бум вот таких вот апликачек. Рисовали обычно через задание региона окну, прямо в дц десктопа и транспарент-окна. Это работало даже в Win2000 и может даже NT4.
CS>Какой еще регион? Там альфа-канал, или ты не заметил. Тени и АА borders.
Я делал еще на XP фичу — полупрозрачная рамка с градиентом прозрачности вокруг заданных окон _других_ приложений (отвечая на вопрос нафиг надо: завернутых в наш app virtualization sandbox). SetWinEventHook + UpdateLayeredWindow с битмапкой с альфа каналом. Было написано за пол дня, работало like a charm — создавались четыре окошка, которые облепляли заданное и на которые натягивались автогенеренные битмапы с альфа каналом.
По поводу аппаратного ускорения этого дела. Тут вопрос неоднозначный. Факт в том что DrvAlphaBlen вызываался в ХР для любых битмапов, а не только для DDB. И ускорять при желании он тоже мог операции даже если второй битмап имел формат не идентичный экранному. И это делалось в реальности, доказательства этому -соседний пример из DDK2003, а точнее функция vAlphaBlendDownload в нем
которая тем и занимается что берет битмап с альфа-каналом и скармливает его в железо с запросом сделать альфабленд с экранным регионом (альфабленд не экранных битмапов не ускорялся, а скармливался в софтварный EngAlphaBlend).
CS>Какой еще регион? Там альфа-канал, или ты не заметил. Тени и АА borders.
Я делал еще на XP фичу — полупрозрачная рамка с градиентом прозрачности вокруг заданных окон _других_ приложений (отвечая на вопрос нафиг надо: завернутых в наш app virtualization sandbox). SetWinEventHook + UpdateLayeredWindow с битмапкой с альфа каналом. Было написано за пол дня, работало like a charm — создавались четыре окошка, которые облепляли заданное и на которые натягивались автогенеренные битмапы с альфа каналом.
По поводу аппаратного ускорения этого дела. Тут вопрос неоднозначный. Факт в том что DrvAlphaBlen вызываался в ХР для любых битмапов, а не только для DDB. И ускорять при желании он тоже мог операции даже если второй битмап имел формат не идентичный экранному. И это делалось в реальности, доказательства этому -соседний пример из DDK2003, а точнее функция vAlphaBlendDownload в нем
Re[42]: Еще
I>>А что здесь за сложность ? В конце девяностых-начале нулевых был ажно бум вот таких вот апликачек. Рисовали обычно через задание региона окну, прямо в дц десктопа и транспарент-окна. Это работало даже в Win2000 и может даже NT4.
CS>Какой еще регион? Там альфа-канал, или ты не заметил. Тени и АА borders.
Я делал еще на XP фичу — полупрозрачная рамка с градиентом прозрачности вокруг заданных окон _других_ приложений (отвечая на вопрос нафиг надо: завернутых в наш app virtualization sandbox). SetWinEventHook + UpdateLayeredWindow с битмапкой с альфа каналом. Было написано за пол дня, работало like a charm — создавались четыре окошка, которые облепляли заданное и на которые натягивались автогенеренные битмапы с альфа каналом.
По поводу аппаратного ускорения этого дела. Тут вопрос неоднозначный. Факт в том что DrvAlphaBlen вызываался в ХР для любых битмапов, а не только для DDB. И ускорять при желании он тоже мог операции даже если второй битмап имел формат не идентичный экранному. И это делалось в реальности, доказательства этому -соседний пример из DDK2003, а точнее функция vAlphaBlendDownload в нем
которая тем и занимается что берет битмап с альфа-каналом и скармливает его в железо с запросом сделать альфабленд с экранным регионом (альфабленд с не экранными destination-битмапами не ускорялся, а скармливался в софтварный EngAlphaBlend).
CS>Какой еще регион? Там альфа-канал, или ты не заметил. Тени и АА borders.
Я делал еще на XP фичу — полупрозрачная рамка с градиентом прозрачности вокруг заданных окон _других_ приложений (отвечая на вопрос нафиг надо: завернутых в наш app virtualization sandbox). SetWinEventHook + UpdateLayeredWindow с битмапкой с альфа каналом. Было написано за пол дня, работало like a charm — создавались четыре окошка, которые облепляли заданное и на которые натягивались автогенеренные битмапы с альфа каналом.
По поводу аппаратного ускорения этого дела. Тут вопрос неоднозначный. Факт в том что DrvAlphaBlen вызываался в ХР для любых битмапов, а не только для DDB. И ускорять при желании он тоже мог операции даже если второй битмап имел формат не идентичный экранному. И это делалось в реальности, доказательства этому -соседний пример из DDK2003, а точнее функция vAlphaBlendDownload в нем