![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Привет!
Есть окно, в котором находится WebBrowser, который должен отображать html текст, который ему передается в виде строки. Понадобилось сделать скругленные углы у окна. Для этого помимо всего прочего сделал Background="Transparent" и AllowsTransparency="True". Окно обрело нужный вид. Но появилась беда: содержимое WebBrowser-а стало "невидимым". Искал в интернете информацию по теме, пишут, что WPF-ный веббраузер очень "деревянный" и по нормальному с ним так сделать то, что мне надо - не получится. Подскажите, пожалуйста, как можно решить эту проблему? |
|||
|
||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Это действительно так. Стандартный WebBrowser не является полностью WPF-control'ом, а содержит контейнер, в котором помещён COM-объект от IE. Сам IE таких настроек не содержит ни в каком варианте, поэтому эффекты для содержимого недоступны. Варианты: 1). Найти сторонний модуль с Web browser на чистом WPF без встроенного COM; 2). Наложить эффекты поверх самого WebBrowser (всякие Border и т. п.), а не непосредственно применяя к нему, хотя, само окно прозрачным сделать не получится, по можно изобразить что-то похожее. |
|||
|
||||
| V0fka |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Ilya81, вот беда.
Пошарил в интернете и нашел вот это: http://wpfchromium.codeplex.com/releases/view/49484 . Но там один проект, как я понял, на С++ и когда я пробую всё решение открыть в Visual Studio, то этот проект пишется как "недоступен" и без него не запускается другой. Не могли бы вы глянуть хотя б 1 глазом туда?
Проблема в том, сам html в этом браузере не отображается. Причем, если я на html отображаю там ссылку, то при наведении курсора туда он принимает соответствующий вид. И ссылка даже на клик реагирует. Но она просто невидимая (прозрачная?) получается (как и все остальное содержимое). Я понял, что лучше показать XAML
Может я уже тут неправильно что-то делаю?
Цель: сделать не прямоугольные края. Если это можно сделать без установки прозрачности окна - я готов рассмотреть любые другие методы. Но, к сожалению, я других не нашел. |
||||||||
|
|||||||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Какой именно? Там их несколько. А если оставить только AllowsTransparency="True", выводится? Т. е. сделать не всё окно прозрачным? Смысл DockPanel не понял, думаю, хватило б Grid. |
|||
|
||||
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
||||
|
||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
||||
|
||||
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Целенаправленно для С++ ничего не ставилось. Я даже не в курсе что надо ставить. Простите, не понял. Что "это" и о какой модификации речь? Тот скрин, который я приводил вторым (Background="Transparent") не устраивает тем, что там есть "темные" уголки по краям, которые не являются прозрачными. Это сообщение отредактировал(а) V0fka - 9.7.2014, 13:52 |
|||
|
||||
| Ilya81 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
В Visual Studio там есть установка компонентов для C++ и много ещё каких. Т. е. нужно запустить установщик в режиме изменения установленных компонентов.
Понятно. В принципе, можно сделать два окна и следить за координатами/размерами верхнего, а нижнее без значка со скруглёнными углами чуть больших размеров. |
||||
|
|||||
| V0fka |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Доустановил таким образом "Microsoft Foundation Classes для С++", но всеравно не завелось. Попробовал удалить/добавить заново конкретно этот проект - но тоже не помогло. Видно не судьба.
Был бы очень признательный если бы вы рассказали подробней или выложили бы примерчик. Кстати, Я с окном постоянно "шаманю" и там куча ещё артефактов. Плюс ко всему помимо веб браузера в окне есть ещё элементы, но для простоты примера я их тут не показывал. |
||||
|
|||||
| Ilya81 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Что-то вроде:
(надеюсь, совсем полностью не нужно). MFC здесь и не нужен, это обёртка для chromium, в нём нет MFC. В окне Output что пишет о неоткрывшемся проекте? Это сообщение отредактировал(а) Ilya81 - 10.7.2014, 11:23 |
||||
|
|||||
| V0fka |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Ilya81,
идея вроде ясна, спасибо! Не факт, конечно, что у меня получится, но буду пробовать. По результатам отпишусь.
Привожу список ошибок (в Output то же самое пишет): ![]() Есть подозрения, что если устранить ошибку №1, то остальные пропадут. Но я не знаю что оно хочет. Это сообщение отредактировал(а) V0fka - 11.7.2014, 13:18 |
|||
|
||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
||||
|
||||
| V0fka |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Ilya81, попробовал сделать как вы выше посоветовали и что-то даже получилось
Чукча не читатель
Ну пёс с ним, в принципе. Мне кажется лучше будет сделать так, как вы предложили с окном-тенью (по крайней мере на чистом C# будет). Тем более вроде даже почти получилось |
||||
|
|||||
| Ilya81 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 105 Регистрация: 18.4.2014 Где: ЛО, Всеволожский р-н Репутация: 1 Всего: 4 |
Можно попробовать установить свойство
либо в обработчике события GotFocus вызывать метод Focus основного окна. Можно заодно внутреннюю часть дополнительного окна сделать прозрачной, чтоб, даже оказавшись на переднем плане, оно не закрывало содержимое основого окна. |
|||
|
||||
| V0fka |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 5.11.2006 Где: Украина Репутация: нет Всего: нет |
Увы, но не работает.
Тоже не работает. Насколько я сейчас понимаю, то нужно наверное не фокусом управлять, а именно "положением" окна что-ли. Сделал в "тени" отлов события Activated и в нем у основного окна вызываю Activate(). Не знаю как насчет правильности использования такого подхода, но по крайней мере вроде бы работает
У дополнительного окна установлены свойства Background="Transparent" и AllowsTransparency="True". При этом если на него клацнуть, то оно выходит на передний план и заступает содержимое окна, которое под ним. Или вы не это имели ввиду? В любом случае, огромное спасибо вам за помощь, похоже, что задача решена! |
||||||||
|
|||||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |