Terminal: Запрос функции: стандартные параметры непрозрачности, такие как традиционная консоль.

Созданный на 9 мая 2019  ·  63Комментарии  ·  Источник: microsoft/terminal

Возможно, я упустил это из виду, просматривая файл json, но я не видел другого средства для достижения прозрачности, и я не поклонник коэффициента размытия акриловых эффектов или того факта, что он отключается, когда окно не выбрано. Традиционная консоль обеспечивает статическую непрозрачность, как и в большинстве окружений nix, я надеюсь, что это всего лишь вопрос времени, когда она будет реализована здесь?

Area-User Interface Issue-Feature Product-Terminal

Самый полезный комментарий

@ TCB13 Просто чтобы вы знали, мы все здесь настоящие люди, сидящие в наших офисах, смотрящие на наши почтовые ящики, нашу очередь сортировки и список проблем на github. Мы читаем каждый из этих выпусков, и мы «чувствуем» их и то, что люди в них говорят. Пожалуйста, постарайтесь не быть злым.

Все 63 Комментарий

В настоящее время он не поддерживается, но мы определенно не хотим терять его из виду. Нам нужно будет немного потрудиться, чтобы правильно настроить визуальные эффекты композиции, но это «в плане».

См. Также # 593, в котором есть дополнительная информация.

Мне нравится классическая прозрачность, но я никогда не использовал акрил, это одна из обязательных функций для меня :)

+1 по этому поводу!

Пожалуйста, не пишите "+1", это создает ненужный шум. Здесь есть отличная кнопка +1:
image

@ zadjii-msft в microsoft не существует такой вещи, как «идеально хорошая кнопка +1», даже когда шумит, никому нет дела и никто ничего не слушает. Думаю, это знает любой, кто когда-либо пользовался каким-либо продуктом Microsoft.

Но эй, я все понял. Извините.

@ TCB13 Просто чтобы вы знали, мы все здесь настоящие люди, сидящие в наших офисах, смотрящие на наши почтовые ящики, нашу очередь сортировки и список проблем на github. Мы читаем каждый из этих выпусков, и мы «чувствуем» их и то, что люди в них говорят. Пожалуйста, постарайтесь не быть злым.

@ DHowett-MSFT @ zadjii-msft

Тот факт, что вместо непрозрачности был использован акрил, на самом деле означает, что никто на самом деле не рассматривал возможность использования этого терминала. Мне кажется, какой-то PM сказал: «О, прозрачные вещи выглядят круто, давайте сделаем их еще круче и добавим размытия!». Приложения / окна терминала обычно не прозрачны, потому что они выглядят великолепно, они прозрачны, потому что позволяют вам видеть другие вещи за окном - полезная функция, с которой согласится большинство пользователей.

Может быть, вам стоит спросить других реальных людей в вашей компании, почему я был так агрессивен в своем другом комментарии. :)

@ TCB13 были голоса, просящие добавить Acrylic в командный терминал, и в то время это было невозможно по причинам обратной совместимости, но новый терминал делает это возможным.

Проблема с этой новой версией заключается в том, что непрозрачность не сразу становится возможной с новыми API-интерфейсами окон, которые она использует, и это то, о чем команда знает и постарается сделать это возможным.

Нет необходимости относиться к вам так пренебрежительно только потому, что это не та функция, которую вы лично хотите или нуждаетесь.

Это было бы очень полезно.

В дополнение к тому, что уже было сказано, возможность сделать окно акриловым, когда оно сфокусировано, и прозрачным, когда не сфокусировано, было бы очень приятно, поскольку это сделало бы этот переход менее резким.

согласовано. Лично мне нужна обычная настройка непрозрачности, потому что мне нравятся очень темные фоны с небольшой прозрачностью. Когда я попробовала использовать акриловые краски, фон получился слишком ярким, что мне не понравилось. Думаю, я вампир 🤷‍♂.

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

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

Правда в том, что я не буду использовать консоль, когда не будет классической прозрачности :), у меня должна быть функция :)

это связано не с этой проблемой, а скорее с наборами сообщений.


НАЖМИ НА МЕНЯ

> Не нужно относиться к вам так пренебрежительно только потому, что это не та функция, которую вы лично хотите или нуждаетесь. когда кажется, что люди совершенно оторваны от общих ожиданий большинства пользователей приложения, они получают восторженные отклики. и прозрачность доступна уже давно, так что ни один человек не заставляет разработчиков угодить одному человеку. как следует из вашего последнего утверждения, по какой-то причине; не стесняйтесь редактировать его. может быть, TCB13 был грубым или агрессивным в каком-то другом треде или в другом случае? как его наиболее безобидная гипербола в https://github.com/microsoft/terminal/issues/603#issuecomment-508031247 --- также silverqx, см. https://github.com/microsoft/terminal/issues/603#issuecomment -546613996 https://github.com/microsoft/terminal/issues/603#issuecomment-507248317 и сколько времени прошло с тех пор, как https://github.com/microsoft/terminal/tags?after=RS2-final прошло первый публичный релиз. Похоже, на это уйдет много времени. не делайте этого дважды, см. https://github.com/microsoft/terminal/issues/603#issuecomment-507835880 --- с https://github.com/microsoft/terminal/issues/603#issuecomment-529696036 , iCode Иногда, пожалуйста, без акрила. просто позвольте акрилу быть невидимым для тех, кто хочет использовать прозрачность. То, как это обрабатывает cmd, приятно.


для cmd я предпочитаю непрозрачность от 80% до 95%, т. е. прозрачность. они одно и то же.

Я думаю, акрил - это полупрозрачность. Мне придется протестировать, поскольку я отключил его на всех машинах с Windows, которые я использую.


С уважением, ratatoeey

Итак, для протокола, я играл с этим. Элементарная реализация не очень сложна, но она не ... отточена. Все окно становится одинаково прозрачным, включая элементы управления XAML (строка вкладок, диалоговые окна и т. Д.). Я думаю, с точки зрения архитектуры, было бы чрезвычайно сложно попытаться сделать _ просто_ прозрачным содержимое «Терминала», и даже тогда все панели будут одинаково прозрачными, включая разделители, и диалоги также останутся прозрачными.

image

Как ни странно, MenuFlyout для раскрывающегося списка новой вкладки _ не_ становится прозрачным, что вызывает больше вопросов.
image

Честно говоря, по моему мнению, опыт кажется немного неотшлифованным. Если люди действительно этого хотят, я не скажу «нет», но я также хочу убедиться, что мы поставляем что-то высококачественное. Поэтому я оставляю его в очереди, чтобы попытаться найти лучшее решение.

На самом деле, мне нравятся прозрачные неклиентские регионы. Вот как работает cmd, и какое-то время (может быть, RS5?):

image

Честно говоря, по моему мнению, опыт кажется немного неотшлифованным. Если люди действительно этого хотят, я не скажу «нет», но я также хочу убедиться, что мы поставляем что-то высококачественное. Поэтому я оставляю его в очереди, чтобы попытаться найти лучшее решение.

Мне очень нравится этот эффект - единственные сплошные окна, которые мне нужны, это диалоговые окна и выпадающие списки - теперь я полагаю, мне просто нужно собрать это из источника: - /

Спасибо за ссылку на модификацию!

Да, я тоже считаю, что все прозрачное - это особенность, а не ошибка 😄

То, как это делает cmd, очень полезно, потому что вы можете читать то, что находится ниже (конечно, это зависит от уровня прозрачности, чтобы выглядеть "хорошо").

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

Итак, для протокола, я играл с этим. Элементарная реализация не очень сложна, но она не ... отточена. Все окно становится одинаково прозрачным, включая элементы управления XAML (строка вкладок, диалоговые окна и т. Д.). Я думаю, с точки зрения архитектуры, было бы чрезвычайно сложно попытаться сделать _ просто_ прозрачным содержимое «Терминала», и даже тогда все панели будут одинаково прозрачными, включая разделители, и диалоги также останутся прозрачными.

Это нормально, если панель вкладок будет прозрачной, все окно должно быть прозрачным, с полосами прокрутки тоже.
Намного лучше было бы иметь немного больше прозрачности для содержимого терминала, чем для панели вкладок и строки состояния, например, около 10%, но это имеет более низкий приоритет и несущественно.
Модальные диалоги должны быть непрозрачными, никто не хочет иметь прозрачные диалоги. 🙂
Идеально было бы иметь разную прозрачность для текста и фона, текст должен быть немного менее прозрачным, чем фон, чтобы его было легче читать.

Главное здесь - сделать так, чтобы он хорошо выглядел. 🚀

Как ни странно, MenuFlyout для раскрывающегося списка новой вкладки _ не_ становится прозрачным, что вызывает больше вопросов.

Это нормально, это раскрывающееся или всплывающее меню не обязательно должно быть прозрачным, гораздо лучше сделать их непрозрачными.

Честно говоря, по моему мнению, опыт кажется немного неотшлифованным. Если люди действительно этого хотят, я не скажу «нет», но я также хочу убедиться, что мы поставляем что-то высококачественное. Поэтому я оставляю его в очереди, чтобы попытаться найти лучшее решение.

Вы должны немного поиграть с этим, фиолетовый фон не лучший пример для прозрачного фона, он выглядит намного лучше с черным фоном.
Некоторые примеры 1 , 2 .

Если вы настроили хорошую и сбалансированную прозрачность для терминала, это может помочь вам в некоторых сценариях, в моем рабочем процессе это помогает мне в 5-10% случаев, когда мне не нужно переключаться на базовое окно. Это хорошо с практической точки зрения, а добавленная стоимость в том, что хорошо выглядит. 🙂

Вот ссылка на код, как это реализовано в conemu.

@ zadjii-msft Я был бы полностью доволен вашей экспериментальной прозрачностью, если бы она была реализована, как в моем предложении
сфокусированный - useAcrylic
несфокусированный - используйте прозрачность

https://github.com/microsoft/terminal/issues/4413

Слева
стандартный CMD с прозрачностью, сфокусированный терминал, фоновый терминал
image

Не могли бы вы добавить разные варианты прозрачного фона и текста (foregorund)
Мне не нужен прозрачный текст. Трудно читать. Но я хочу прозрачный фон

@ zadjii-msft @ корица-msft

Мне нужна кнопка Peek на панели заголовка рядом с кнопкой новой вкладки + или кнопкой свертывания - , как и в Aero Peek.

Если вы, ребята, переделываете композицию, рассмотрите возможность добавления ее в TitleBar. Чтобы, когда я наводил на него курсор, я мог видеть экран позади, а не оставаться прозрачным все время.

__Относительно родственные __

Можем ли мы иметь кнопку полноэкранного режима на панели заголовков во всех приложениях, которые позволяют максимизировать (да и в терминале)! Я думаю, что мы должны добавить Peek в список, ИМХО, если мы добавляем в саму оконную систему.

@ Nirmal4G Я переместил ваш первый запрос на # 5426. Я почти уверен, что мы ничего не можем поделать с вашим вторым запросом - это звучит как довольно обширное изменение оконного управления _все_ приложениями Windows. Это может быть запрос, который подошел бы Microsoft / PowerToys . IIRC, одна из оригинальных игрушек powertoys, работала за счет изменения кнопок заголовка заголовка.
image

Поскольку это, кажется, общая проблема для прозрачности и акрила ... Я только что установил это приложение для блокнотов, которое какой-то другой парень из MSFT сделал в свое свободное время, и, похоже, он может поддерживать прозрачность акрила, когда он не сфокусирован в фоновом режиме. Он также использует XAML и Windows.UI.

Пожалуйста, добавьте эту возможность в какой-то момент. Спасибо.

Страница проекта: https://github.com/JasonStein/Notepads

--редактировать:
Просматривая проект, он делает свою акриловую кисть для всего этого:

https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

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

Даааа, ну ... Прозрачность / акрил в терминале - это своего рода конфетка, которую пользователь, вероятно, ожидает быть там все время. В противном случае никто не захотел бы этого, потому что если он сфокусирован, это не так уж много в этом отношении.

Кроме того, пользователи терминала, вероятно, являются продвинутыми пользователями, которые также рассматривают необходимость редактирования JSON, чтобы включить его, и, вероятно, каким-то образом будут знать о влиянии батареи.

Можно еще сделать это необязательным.

@ будущее себя:

  • https://github.com/JasonStein/Notepads/blob/58530f19dd0173bab13e40c9511e5277e42c4129/src/Notepads/Brushes/HostBackdropAcrylicBrush.cs

    • Блин, здесь используется Win2D, и я не уверен, что мы сможем ее использовать, так как это C #

    • https://github.com/microsoft/Win2D/blob/master/winrt/docsrc/CanvasDevice.xml / https://microsoft.github.io/Win2D/html/M_Microsoft_Graphics_Canvas_CanvasDevice_GetSharedDevice.html

  • Однако есть https://docs.microsoft.com/en-us/uwp/api/windows.ui.composition.compositor.createhostbackdropbrush?view=winrt-18362

    • это выглядит многообещающим

  • https://stackoverflow.com/questions/43208841/how-to-use-acrylic-accent-createhostbackdropbrush-in-windows-10-creators-upd/44576160
  • Затем напишем код
            auto rootVisual = winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::GetElementVisual(RootGrid());
            auto compositor = rootVisual.Compositor();
            auto rootSprite = compositor.CreateSpriteVisual();
            rootSprite.Size(winrt::Windows::Foundation::Size(
                ::base::saturated_cast<float>(RootGrid().ActualWidth()),
                ::base::saturated_cast<float>(RootGrid().ActualHeight())));

            auto b = rootVisual.Compositor().CreateHostBackdropBrush();

            rootSprite.Brush(b);
            winrt::Windows::UI::Xaml::Hosting::ElementCompositionPreview::SetElementChildVisual(RootGrid(), rootSprite);
  • О нет, даже с этим мы получаем предварительно размытый контент
    image

  • Это приводит меня к https://github.com/Microsoft/WindowsCompositionSamples/issues/202

  • Это подводит меня к завершению исследования, которое я уже провел в прошлом году https://github.com/microsoft/terminal/issues/1753#issuecomment-508070516

Я здесь ничего не обещаю, просто оставляю заметки из вкладок, которые я открыл сегодня утром

Подождите, я правильно прочитал? Невозможно создать частично прозрачное окно или акрил без размытия из-за проблем с безопасностью? Какие?

Я, как и многие, очень отчаянно хочу / нуждаюсь в полупрозрачности терминала, как будто она уже давно используется на фронте * nix. Неужели нам действительно нужно идти по «маршруту заставки», делать снимок экрана во время рисования, рисовать снимок как фоновое изображение в окне, а затем рисовать непрозрачность поверх него?

Я имею в виду, насколько возможно полупрозрачное окно может стать вектором атаки ... даже полностью прозрачный кейлоггер отключит окно. Искренне любопытно. И сбит с толку. Но в основном любопытно.

Конечно, этот поток довольно старый, с тех времен, когда единственный способ сделать Acrylic был из чистого приложения UWP. UWP довольно сильно изолированы от возможности читать состояние других процессов в системе. Если приложение в этом контексте могло тривиально подготовить содержимое окна, находящегося за ним, то теоретически оно могло бы прочитать содержимое чего-либо еще, что работает в системе, в _ любом_ контексте. Это абсолютно невозможно для приложений UWP.

С тех пор мир сильно изменился - есть приложения, такие как Terminal, которые используют UWP XAML (и acrylic), но _не_ приложения UWP. В этой новой модели мы могли бы поступить иначе, нам просто нужно провести дополнительные исследования.

Читая исходники AcrylicBrush , я, возможно, нашел обходной путь. Но отнеситесь к этому с долей скептицизма, поскольку у меня минимальный опыт разработки пользовательского интерфейса для Windows.
Похоже, что фабричный метод в Acrylic Brush поддерживает предварительно размытый фон, по-видимому, там, где оболочка уже сделала бы это, ЕСЛИ этот метод открыт, и ЕСЛИ не размытый фон передается как предварительно размытый фон и ЕСЛИ Я не совсем ошибся, фабрика может вообще не добавлять эффекта размытия. Но опять же, у меня есть высокие шансы на 150% ошибиться, так что примите это как хотите.

Боже мой, этому обсуждению больше года, но существенная прозрачность стекла все еще не реализована. Это стандартно для терминалов unix.

@alxkvx Как подробно обсуждалось в этой ветке, это технически сложная проблема, поэтому она до сих пор не реализована. Если у вас есть какие-либо предложения относительно того, как _как_ это можно реализовать с помощью нашего стека пользовательского интерфейса, я был бы рад их услышать.

@alxkvx Как подробно обсуждалось в этой ветке, это технически сложная проблема, поэтому она до сих пор не реализована. Если у вас есть какие-либо предложения относительно того, как _как_ это можно реализовать с помощью нашего стека пользовательского интерфейса, я был бы рад их услышать.

ну, на самом деле я не разбирался в проблеме, и я не понимаю, почему у стека пользовательского интерфейса проблемы с этим, я знаю, что с помощью терминала WSL я могу просто щелкнуть правой кнопкой мыши> Свойства> Установить непрозрачность, и я получу прозрачность стекла. Лично для меня это существенная особенность.

Размытие и непрозрачность, когда терминал не сфокусирован, просто глупо. Кто об этом просил? 🤷 Я буду продолжать использовать cmd и powershell.

@alxkvx Как подробно обсуждалось в этой ветке, это технически сложная проблема, поэтому она до сих пор не реализована. Если у вас есть какие-либо предложения относительно того, как _как_ это можно реализовать с помощью нашего стека пользовательского интерфейса, я был бы рад их услышать.

ну, на самом деле я не разбирался в проблеме, и я не понимаю, почему у стека пользовательского интерфейса проблемы с этим, я знаю, что с помощью терминала WSL я могу просто щелкнуть правой кнопкой мыши> Свойства> Установить непрозрачность, и я получу прозрачность стекла. Лично для меня это существенная особенность.

Проблема в том, что инфраструктура пользовательского интерфейса (UWP XAML), в которую встроен терминал Windows, просто не поддерживает полную прозрачность, как приложения win32 или WPF (например, терминал wsl). Единственный инструмент, к которому у них есть доступ, - это акрил, который предназначен не столько для прозрачности, сколько для дизайнерского акцента. Реализация его в их стеке пользовательского интерфейса потребует хакерского решения, такого как мой вышеупомянутый комментарий, или полной переработки того, как отображается консоль (по крайней мере, я так понимаю, пользовательский интерфейс Windows не является моей областью разработки)

Изменить: уточнение

@alxkvx Как подробно обсуждалось в этой ветке, это технически сложная проблема, поэтому она до сих пор не реализована. Если у вас есть какие-либо предложения относительно того, как _как_ это можно реализовать с помощью нашего стека пользовательского интерфейса, я был бы рад их услышать.

ну, на самом деле я не разбирался в проблеме, и я не понимаю, почему у стека пользовательского интерфейса проблемы с этим, я знаю, что с помощью терминала WSL я могу просто щелкнуть правой кнопкой мыши> Свойства> Установить непрозрачность, и я получу прозрачность стекла. Лично для меня это существенная особенность.

Проблема в том, что инфраструктура пользовательского интерфейса (XAML), в которую встроен терминал Windows, просто не поддерживает полную прозрачность, как приложения win32 (например, терминал wsl). Единственный инструмент, к которому у них есть доступ, - это акрил, который предназначен не столько для прозрачности, сколько для дизайнерского акцента. Реализация его в их стеке пользовательского интерфейса потребует хакерского решения, такого как мой вышеупомянутый комментарий, или полной переработки того, как отображается консоль (по крайней мере, я так понимаю, пользовательский интерфейс Windows не является моей областью разработки)

Xaml поддерживает прозрачность, а окна UWP и острова Xaml - нет.

Когда Терминал сможет перейти на рабочий стол WinUI 3 и подключиться к самому HWND, тогда он сможет реализовать не размытую прозрачность.

Сам Acrylic будет отложен для WinUI 3 - им придется переделывать его при извлечении из ОС.

Подождите, нет, давайте проясним некоторые заблуждения - мы уже можем получить доступ к HWND напрямую, потому что мы уже являемся приложением win32. Мы работаем с группами XAML и компоновкой, чтобы попытаться найти решение этой проблемы. Насколько я понимаю (в настоящее время), остров XAML всегда имеет непрозрачный фон, а это означает, что мы не можем просто иметь прозрачные компоненты в XAML, которые прозрачны на всем протяжении до HWND. Я понятия не имею, сможет ли WinUI 3 волшебным образом решить эту проблему для нас, и это то, что нам нужно обсудить подробнее с этой командой. К счастью, они работают в коридоре рядом с нами (по крайней мере, они работали, когда мы все работали в офисных зданиях), так что вести эти обсуждения не так уж сложно 😄

@ будущее себя:

Я почти уверен, что Win2D поддерживает c ++ / winrt (он написан на c ++!), Но даже если не для этого варианта использования, есть следующее:

https://github.com/fobrs/Win2DinMFC

Кроме того, я считаю, что индивидуальный акрил должен быть возможен, потому что я смог получить акрил (с закругленными углами !!!) в WPF, следуя этому примеру:

https://github.com/microsoft/Windows.UI.Composition-Win32-Samples/tree/master/dotnet/WPF/AcrylicEffect

И этот пост феноменален:

https://notes.yvt.jp/Desktop-Apps/Enables-Backdrop-Blur

Все это действительно полезно, если вы используете WPF XAML, но мы используем UWP XAML, который, к сожалению, всегда будет иметь непрозрачный фон. Мы работаем с командой WinUI, чтобы, надеюсь, снять это ограничение для WinUI 3.0. Возможно, пройдет некоторое время, прежде чем будет достигнут какой-либо другой прогресс по этому вопросу, пока мы работаем с ними над техническими особенностями.

@ zadjii-msft Итак, вы говорите мне, что элемент управления wpf терминала мог бы поддерживать настраиваемый акрил acrylic blur , но не UWP (в обозримом будущем) ... странные времена 😅😅

О нет, UWP XAML может прекрасно поддерживать акрил, это просто «традиционная непрозрачность» (непрозрачность без акрилового эффекта), которую UWP XAML в настоящее время не поддерживает.

Я бы хотел, чтобы вы продолжили это обсуждение в другом месте (возможно, напишите новый выпуск, если у вас есть проблема?), Потому что это тема для _не размытой прозрачности_. У нас уже есть «акрил» в элементе управления UWP, и дальнейшее обсуждение того, «как получить акрил в элементе управления UWP» ... Я имею в виду, например, попытку объяснить лошади, как она может стать лошадью, если она действительно, действительно хотеть?

@ zadjii-msft @DHowett Извините, я не это имел в виду. Под акрилом я имел в виду акрил с настраиваемым радиусом размытия.

@ zadjii-msft Я хочу провести несколько экспериментов. Не могли бы вы указать мне, где в вашем коде создается окно хостинга xaml / DesktopWindowXamlSource? Это очень большая кодовая база 😅😅

@AnuthaDev Это в src/cascadia/WindowsTerminal/IslandWindow.cpp

Хорошо, это, по крайней мере, возможно для wpf наверняка:
Screenshot (363)

Возможно, окно в IslandWindow.cpp можно создать с помощью WS_EX_NOREDIRECTIONBITMAP, и метод, описанный здесь, можно использовать для создания акриловой кисти без размытия . Использование createhostbackdropbrush () автоматически вводит размытие, поэтому createbackdropbrush () - единственный вариант. Или, может быть, это не сработает ... иди. Постараюсь сообщить вам ....

Изменить: Рассказчик: Это не сработало!

Возможно, окно в IslandWindow.cpp можно создать с помощью WS_EX_NOREDIRECTIONBITMAP, и метод, описанный здесь, можно использовать для создания акриловой кисти _non blur_. Использование createhostbackdropbrush () автоматически вводит размытие, поэтому createbackdropbrush () - единственный вариант. Или, может быть, это не сработает ... иди. Постараюсь сообщить вам ...

Я так не думаю, поскольку этот метод находится в WPF. XAML используется в двух разных средах WPF (этот метод) и UWP (используется в WT). Я покопался в источнике акрила UWP, и единственное, что могло бы заставить работать традиционную прозрачность, - это действительно обходной путь Hakki, где вы в основном обманываете ОС, заставляя думать, что фон уже был размыт, поэтому у него нет чтобы добавить размытие, но я красивое дерево, даже если оно несовместимо с островами XAML.

@ zadjii-msft @DHowett Хорошо, вот что я нашел:
Конечно, можно получить пользовательский акрил размытия в приложении Win32 на c ++, используя win2d:

(Радиус размытия 1):
Screenshot (364)

ТЕМ НЕ МЕНИЕ!! Вы не можете этого сделать с островами xaml. Как вы уже знаете, за xaml определенно будет непрозрачный фон ...

Для этого нам нужно использовать apis композиции и выполнить рендеринг в hwnd DesktopWindowTarget.

Следовательно, в настоящее время, чтобы получить прозрачность акрила без размытия, нам нужно удалить острова xaml и использовать его вместо панели подкачки.

(Если вы это уже знаете, извините за потраченное время ...)

Следовательно, нет прозрачности без значительного изменения архитектуры.

(Вывод, который уже был очевиден и в который я не внес абсолютно ничего)

Да, поэтому TL; DR для тех, кто не хочет читать все предыдущее обсуждение, в основном заключается в том, что структура, которая используется для терминала Windows, в настоящее время не поддерживает эту функцию, ОДНАКО разработка этой структуры продолжается и прозрачность (насколько я понимаю это) находится в разработке. Таким образом, решить эту проблему можно только после того, как платформа (острова XAML) поддерживает прозрачность.

Да, поэтому TL; DR для тех, кто не хочет читать все предыдущее обсуждение, в основном заключается в том, что структура, которая используется для терминала Windows, в настоящее время не поддерживает эту функцию, ОДНАКО разработка этой структуры продолжается и прозрачность (насколько я понимаю это) находится в разработке. Таким образом, решить эту проблему можно только после того, как платформа (острова XAML) поддерживает прозрачность.

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

Powershell и CMD имеют возможность установить прозрачность. Я понимаю, что используются разные технологии, но многие пользователи используют конфиги прозрачности

Powershell и CMD имеют возможность установить прозрачность. Я понимаю, что используются разные технологии, но многие пользователи используют конфиги прозрачности

да, то же, что и терминал WSL

Прозрачность CMD и PWSH достижима с этим терминалом, но, насколько я понимаю, большинство людей (включая меня) не хотят эту версию прозрачности, а скорее прозрачность терминала, подобную * nix, где полупрозрачен только фон, а не все, включая текст.

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

Может быть , это может быть реализовано путем создания окна ниже (вместе?) Окно XAML острова (с родительского окна набора в WS_EX_NOREDIRECTIONBITMAP) и установив стиль WS_CLIPSIBLINGS на него, затем состав апи и DirectX Interop может быть использован для отображения содержимого с полупрозрачным фоном ( Like итак ) в это окно. Таким образом, вам не нужно удалять острова xaml и тому подобное, например полосы прокрутки, должны работать, просто будет заменена часть swapchainpanel. Или, может быть, если это не сработает, вы можете вырезать отверстие в части панели подкачки с помощью HRGN, чтобы окно композиции под ней стало видимым. При переходе от swapchainpanel к hwnd не должно быть заметного снижения производительности (возможно).

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

(Вывод, который уже был очевиден и в который я не внес абсолютно ничего)

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

Как упоминалось ранее в этой теме - мы работаем с командой WinUI, чтобы добавить это в WinUI 3.0. Я считаю, что это отслеживается в https://github.com/microsoft/microsoft-ui-xaml/issues/1247. Это путь, которым мы будем следовать, чтобы добавить эту функцию в Терминал, потому что внедрение этого решения также означает использование важной функции платформы разработки для всей платформы, которая также поможет улучшить другие приложения в Windows.

Как упоминалось ранее в этой теме - мы работаем с командой WinUI, чтобы добавить это в WinUI 3.0. Я считаю, что это отслеживается в microsoft / microsoft-ui-xaml # 1247 . Это путь, которым мы будем следовать, чтобы добавить эту функцию в Терминал, потому что внедрение этого решения также означает использование важной функции платформы разработки для всей платформы, которая также поможет улучшить другие приложения в Windows.

Поскольку команда терминала выбрала направление в этом вопросе, следует ли удалить тег «требуется помощь»?

@tajetaje хороший улов, спасибо!

(Вывод, который уже был очевиден и в который я не внес абсолютно ничего)

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

Как упоминалось ранее в этой теме - мы работаем с командой WinUI, чтобы добавить это в WinUI 3.0. Я считаю, что это отслеживается в microsoft / microsoft-ui-xaml # 1247 . Это путь, которым мы будем следовать, чтобы добавить эту функцию в Терминал, потому что внедрение этого решения также означает использование важной функции платформы разработки для всей платформы, которая также поможет улучшить другие приложения в Windows.

@ zadjii-msft, я вижу, как WinUI может сыграть в этом свою роль, но не уверен, как проблема без полей приводит нас к этому. Что касается фактического результата, к которому стремятся большинство людей, я думаю, что это прекрасная интерпретация из # 743 ) того, что могло бы быть:

image

(Вывод, который уже был очевиден и в который я не внес абсолютно ничего)

Я бы не сказал, что вы ничего не сделали - я всегда рад внешнему подтверждению моих собственных исследований. Я был бы еще счастливее, если бы вы доказали мою неправоту и нашли эффективный способ сделать это 😉
Как упоминалось ранее в этой теме - мы работаем с командой WinUI, чтобы добавить это в WinUI 3.0. Я считаю, что это отслеживается в microsoft / microsoft-ui-xaml # 1247 . Это путь, которым мы будем следовать, чтобы добавить эту функцию в Терминал, потому что внедрение этого решения также означает использование важной функции платформы разработки для всей платформы, которая также поможет улучшить другие приложения в Windows.

@ zadjii-msft, я вижу, как WinUI может сыграть в этом свою роль, но не уверен, как проблема без полей приводит нас к этому. Что касается фактического результата, к которому стремятся большинство людей, я думаю, что это прекрасная интерпретация из # 743 ) того, что могло бы быть:

image

https://github.com/microsoft/microsoft-ui-xaml/issues/1247 отслеживает как без полей, так и прозрачность

Была ли эта страница полезной?
0 / 5 - 0 рейтинги