Комментарии 52
Эх, не дочитал до конца, запустил и сразу же нажал кнопку Loop. Хорошо хоть сохранялся до этого)
Хороший урок для тех, кто не любит дочитывать статьи до конца
помогите, пожалуйста исправить такую программу:
— не печатает
cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
— не печатает
Не удалось посмотреть вживую с вашим скомпилированным файлом. Все выглядит как на вашем первом скриншоте.
Странно, у вас Windows 8?
Да, образ с modern.ie, IE10 on Win8 для VMware.
У вас не WIndows 8.1, а просто Windows 8, я перепутал id:
supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" — это для 8.1, а supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" — для 8.
Исправил, проверьте сейчас.
supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" — это для 8.1, а supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" — для 8.
Исправил, проверьте сейчас.
Кстати, артефакты у меня начинаются только если добавить более 300 кнопок, до этого все идеально. Так что я не был бы так категоричен, утверждая, что эта фича совсем уж бесполезна — не так уж много где нужно подобное безумие.
Давайте не будем возмущаться некачественой реализацией, а задумаемся, зачем оно надо. А надо оно, когда у вас прозрачные контролы накладываются друг на друга. Это нестандартная и очень редкая ситуация в нормальных приложениях. Кнопки уж точно накладываться друг на друга не будут (у вас даже хит тесты не будут работать правильно).
Если же вам нужно подобное, то, скорее всего, это ради красивостей, анимаций и прочих свистелок и перделок. В этом случае реализовывать всё вручную при наличии нормальных гуёвых фреймворков тоже никто не будет.
Вот что винда виснет — это плохо, да… Из-под ограниченного юзера тоже виснет?
Если же вам нужно подобное, то, скорее всего, это ради красивостей, анимаций и прочих свистелок и перделок. В этом случае реализовывать всё вручную при наличии нормальных гуёвых фреймворков тоже никто не будет.
Вот что винда виснет — это плохо, да… Из-под ограниченного юзера тоже виснет?
Хоть бы возразили что ли. А то минусов понатыкали и убежали.
Из-под ограниченного юзера тоже виснет?Естественно, виснет, это старая проблема с исчерпанием глобальных для сеанса пользователя дескрипторов GDI.
GDI-то ладно, это понятно. Почему не обработалось сообщение о CAD? Хотя Task Manager тоже handle'ы требует — может и обработалось, просто среагировать нечем. Но отсутствие возможности прибить процесс, съевший ресурсы GDI — это странно.
Переложить блендинг со своих плеч на плечи ОС, которая по хорошему может блендить даже на GPU.
Например играем видеоролик, поверх него хотим рисовать полупрозрачную панельку с элементами управления. Ваши предложения?
Например играем видеоролик, поверх него хотим рисовать полупрозрачную панельку с элементами управления. Ваши предложения?
Да хоть на летающем среди звёзд параллелепипеде. WPF.
Ради панельки переписывать весть проект на другой язык и фреймворк?
Сейчас везде интерфейс не прямоугольники из Windows 98, а кнопочки со сглаженными краями, ради них тоже на WPF переходить?
Сейчас везде интерфейс не прямоугольники из Windows 98, а кнопочки со сглаженными краями, ради них тоже на WPF переходить?
Ничто не мешает сделать видео и панельку на WPF, не трогая остального. WPF, WinForms, MFC, VCL и др. прекрасно сочетаются.
Если у вас в 2015-м году кнопки в стиле 1995-го года — при том, что нативные контролы рисуются скругленными с 2001-го года, — то я не понимаю, как вообще можно обсуждать полупрозрачные панельки.
Если у вас в 2015-м году кнопки в стиле 1995-го года — при том, что нативные контролы рисуются скругленными с 2001-го года, — то я не понимаю, как вообще можно обсуждать полупрозрачные панельки.
Что-то не верю я в прекрасное сочетание WPF и VCL.
WPF хостится в нативном окне, контролы VCL в большинстве своём нативные окна. Остаётся только положить одно окно в другое.
Для справки: в Visual Studio равномерно размазаны WPF, WinForms, Win32, HTML. Это живое доказательство сочетаемости.
Для справки: в Visual Studio равномерно размазаны WPF, WinForms, Win32, HTML. Это живое доказательство сочетаемости.
Но это не даст требуемую полупрозрачность.
Приложение на VCL, внутри нативный прямоугольный контрол, во весь контрол область WPF, во всю область видео, в ограниченной части области прозрачная панелька произвольной формы. Для взаимодействия между управляемым и неуправляемым кодом пишем по классу на Delphi и на .NET, чтобы при тыкании в панельку вызывались функции из приложения (чисто прокси с однострочными методами).
Я что-то упустил?
Я что-то упустил?
И какой смысл тогда vcl в нем использовать? Может у меня в панельке весь функционал приложения.
А если приложение уже есть, или не хочется ради панельки тащить C# с дотнетом, то я как-нибудь выкручусь, и тут Layered окна были бы отличным помощником.
А если приложение уже есть, или не хочется ради панельки тащить C# с дотнетом, то я как-нибудь выкручусь, и тут Layered окна были бы отличным помощником.
Всё верно: если у вас весь функционал приложения в полупрозрачной панельке и прочих свистелках и перделках, то смысла использовать VCL нет. :) Потому что такие вещи или пишешь с помощью подходящих инструментов, или совокупляешься до скончания времён. VCL для графических понтов не приспособлен, не нужно его насиловать.
Если смешение с дотнетом для вас недопустимо, если у вас один графический понт на всё приложение, то это и есть исключительный случай, про который я сказал в первом абзаце первого комментария. Да, в этом случае слоёные окна сойдут. Если вас не смущает ограничения по оси, конечно…
Ну и VCL я в целом рассматриваю как legacy. Я могу понять поддержку старого приложения, но не могу понять написание нового на этой библиотеке. Отсюда и моя позиция: если новое приложение, то писать сразу на дотнете; если старое, то плавно перебираться на дотнет. Кроме религиозных причин я ни разу не слышал рациональных доводов заниматься разработкой новых приложений на дельфи. (Есть реальная киллер-фича нативного бинарника, но покажите мне юзера, которому до этого есть дело...)
Если смешение с дотнетом для вас недопустимо, если у вас один графический понт на всё приложение, то это и есть исключительный случай, про который я сказал в первом абзаце первого комментария. Да, в этом случае слоёные окна сойдут. Если вас не смущает ограничения по оси, конечно…
Ну и VCL я в целом рассматриваю как legacy. Я могу понять поддержку старого приложения, но не могу понять написание нового на этой библиотеке. Отсюда и моя позиция: если новое приложение, то писать сразу на дотнете; если старое, то плавно перебираться на дотнет. Кроме религиозных причин я ни разу не слышал рациональных доводов заниматься разработкой новых приложений на дельфи. (Есть реальная киллер-фича нативного бинарника, но покажите мне юзера, которому до этого есть дело...)
Aimp весь из графических понтов, однако на Дельфи написан и ничего.
Тащить в проект WPF с вечно размытыми иконками и шрифтами, который на слабых машинах хорошо если вообще окно прорисует, плюс дотнет, ради панельки, нет спасибо.
Про legacy: habrahabr.ru/post/165273/
Тащить в проект WPF с вечно размытыми иконками и шрифтами, который на слабых машинах хорошо если вообще окно прорисует, плюс дотнет, ради панельки, нет спасибо.
Про legacy: habrahabr.ru/post/165273/
Ваши данные о WPF сильно устарели. Размытость почти всегда из-за кривых рук: рендеринг шрифтов уже лет пять как настраивается, выравнивание поправляется от первой версии. Если компу меньше лет эдак семи, то не слишком навороченное приложение тормозить не будет. Опять-таки, от прямых рук зависит. Но если вы разрабатываете под Pentium III, то да, WPF не подойдёт, конечно. :)
Конкретные приложения в пример можете не приводить. Так можно докатиться до обоснования безупречности PHP тем, что на нём википедия работает (аргумент с фейсбуком, к слову, скоро перестанет работать). :)
Чёрт побери, ну что всем так нравится меня тыкать в мою же статью (точнее, в мой перевод). :D Да, в WPF много плохого. Но он всё равно лучше почти всего остального. В этом вся боль.
Конкретные приложения в пример можете не приводить. Так можно докатиться до обоснования безупречности PHP тем, что на нём википедия работает (аргумент с фейсбуком, к слову, скоро перестанет работать). :)
Чёрт побери, ну что всем так нравится меня тыкать в мою же статью (точнее, в мой перевод). :D Да, в WPF много плохого. Но он всё равно лучше почти всего остального. В этом вся боль.
Нативные контролы как-раз и используют тормозной DrawThemeParentBackground, который заставляет перерисовываться другие контролы, в то время как с помощью адекватной реализации WS_EX_LAYERED можно было бы переложить это на видеокарту (простое и быстрое наложение текстур).
Обычно на таких требованиях заказчик не останавливается. Потом стилизацию хитрую попросят, анимации и прочее. Нужна мультимедийность, краски, градиенты и т.п. — перелазьте на что-то более пригодное. Коллеги из Индии как-то по залихватски заявили однажды:
— Да нарисуем также и с теми же таймингами на WinForms и лицо небойсь было как на меме «B**ch Please». Но когда юзабилитист начал макеты перерисовывать раз в неделю, все — приплыли.
— Да нарисуем также и с теми же таймингами на WinForms и лицо небойсь было как на меме «B**ch Please». Но когда юзабилитист начал макеты перерисовывать раз в неделю, все — приплыли.
Спасибо. Можно было еще посоветовать Windows не использовать.
Сейчас делаю программу на C# и понадобилось мне к стандартному ТрекБару сделать подписи значений у рисок. Но когда я придвигаю лабелы со значениями слишком близко, то большие риски перекрываются фоном лабела. Сделал свойство «TransparentColor», — так в этом месте форма стала прозрачной насквозь. А счастье было так близко…
Т.е. плюем на gdi хэндлы, коих достаточно мало на всю систему и крутим цикл, спрашивая, почему тормозит? Забавно :)
А вообще подход интересный, про один из нюансов не знал, так что автору плюс :)
А вообще подход интересный, про один из нюансов не знал, так что автору плюс :)
немного оффтоп:
Есть ли возможность выводить слоистые окна поверх полноэкранных Direct3D приложений? В Win7 такой возможности я не нашел, возможно нечто появилось в Win8?
// пилю свою обертку над AGTH, суть — вывод субтитров поверх игры.
Есть ли возможность выводить слоистые окна поверх полноэкранных Direct3D приложений? В Win7 такой возможности я не нашел, возможно нечто появилось в Win8?
// пилю свою обертку над AGTH, суть — вывод субтитров поверх игры.
А всё почему? Потому, что это изначально был костыль для рисования тени курсора.
Пример очень хороший. Однако если использовать возможности Windows, то лучше уж DirectComposition.
Вы бы хоть конфигурацию системы указали, а то «композицией окон будет заниматься видео карта», «прирост в производительности» и «стало тормозить даже элементарное перетаскивание окна». Может у Вас просто видеокарта слабая и на более сильных системах такого эффекта не будет?
О господи, Delphi, я думал он давно умер.
Для того чтобы полюбоваться тормозами отрисовки интерфейса в любой версии Windows достаточно открыть произвольную программу с более-менее сложным интерфейсом (например, Проводник) и потаскать мышкой её левый верхний угол по диагонали. Интересно, хотя бы в 10-й версии изменение размеров окна будет адекватно работать?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Стиль WS_EX_LAYERED для дочерних окон в Windows 8