Что значит works natively in WPF?
От: mangaman  
Дата: 11.03.17 09:59
Оценка:
Всем привет. В WPF чайник, полный, ни разу не открывал.

Объясните, пожалуйста, на пальцах, что может означать требование "Works natively in a WPF .NET (no hosting necessary)", относящееся к .NET контролу?
Re: Что значит works natively in WPF?
От: fddima  
Дата: 11.03.17 10:05
Оценка:
Здравствуйте, mangaman, Вы писали:

Полагаю то, что контрол должен быть именно контролом WPF, а не заврапленным winforms контролом или заврапленным (нативным) окном.
Re[2]: Что значит works natively in WPF?
От: mangaman  
Дата: 11.03.17 10:16
Оценка:
F>Полагаю то, что контрол должен быть именно контролом WPF, а не заврапленным winforms контролом или заврапленным (нативным) окном.

Я вот как раз эту разницу не понимаю
Re[3]: Что значит works natively in WPF?
От: fddima  
Дата: 11.03.17 10:26
Оценка: 2 (1) +2
Здравствуйте, mangaman, Вы писали:

F>>Полагаю то, что контрол должен быть именно контролом WPF, а не заврапленным winforms контролом или заврапленным (нативным) окном.

M>Я вот как раз эту разницу не понимаю
В классическом Win32/Gdi32/User32 API — каждый контрол — это отдельное окно, например создаваемое через системный вызов CreateWindow (диалоги оставим в покое). Т.е. ещё раз повторю — контрол это окно. WinForms — оборачивают эти системные API в вид более удобный для изпользования в .NET.
Ещё давно существовали т.н. window-less фреймворки, когда создаётся всего одно окно, а для контролов — не создаются — фреймворк же отрисовывает эти контролы (при этом в обоих случаях они отрисовывают сами себя). Вот WPF — это windowless фреймворк, любой браузер — использует схожий подход.
При этом в WPF есть WinFormsHostControl по моему называетя, и позволяет захостить в WPF-окне — "старые" WinForms контролы. Однако при этом, часть функционала потеряется — ну например если идут трансформации (перспектива, повороты) — то для WPF контролов они применимы, а для нативных — нет. Нативное окно всегда прямоугольное (или квадратное).

UPD; Ну если хочется углубится — то лучше взять соответствующие книги.
Отредактировано 11.03.2017 10:28 Mystic Artifact . Предыдущая версия . Еще …
Отредактировано 11.03.2017 10:27 Mystic Artifact . Предыдущая версия .
Re: Что значит works natively in WPF?
От: Kolesiki  
Дата: 11.03.17 11:11
Оценка: -3
Здравствуйте, mangaman, Вы писали:

M>Объясните, пожалуйста, на пальцах, что может означать требование "Works natively in a WPF .NET (no hosting necessary)", относящееся к .NET контролу?


Если через аналогии, то WinForms и WPF — это как Windows и Linux — их программы(контролы) несовместимы. Но можно сделать интерпретатор для линукса, который будет разбирать виндовую программу и исполнять. Вот этот интерпретатор — hosting винформсных контролов в WPF приложении.
Re[4]: Что значит works natively in WPF?
От: mangaman  
Дата: 11.03.17 21:49
Оценка:
Я просто книги не успею прочитать)

Смысл такой, у меня есть некое графическое приложение на WinAPI\C++, которое использует DirectX 9 для рендеринга в окно. Мне нужно на его основе сделать wpf компонент, который works natively in WPF. Т.е. рендерить не в окно, а в этот компонент, который (видимо) можно произвольно размещать на формах.

С какой стороны подойти к задаче? Может кто-то посоветует сэмпл\статью с решением? Я пока нагуглил D3DImage компонент. Но может есть более правильные пути?
Re[5]: Что значит works natively in WPF?
От: fddima  
Дата: 12.03.17 07:29
Оценка:
Здравствуйте, mangaman, Вы писали:

Тогда твой компонент мог-бы рисовать себя на поверхность, скажем в памяти. А WPF компонент — эту поверхность уже в "контрол".

Т.е. да, нужно что-то вроде D3DImage. Я бы смотрел в этом направлении, но слишком глубоко я не изучал — наверняка кто-то уже делал подобное — нужно или искать или копать.

PS: В практическом смысле, если проблемы будут именно с эффективным трансфером DX поверхностей — то можно для начала упростить и блитить через системную память. Но это уже вопрос приоритетов/оптимизации.
Re[5]: Что значит works natively in WPF?
От: Константин Черногория  
Дата: 17.03.17 15:29
Оценка:
Здравствуйте, mangaman, Вы писали:

M>Я пока нагуглил D3DImage компонент. Но может есть более правильные пути?

D3DImage правильный, но на отладку уйдёт заметное время.
Обрати внимание на потерю контекста (реакцию на Ctrl+Alt+Del), resize, масштабирование для high DPI.

Но ты сначала выясни у клиента или босса, подойдёт ли им D3D interop. А то может под native имели в виду, шоб ты всю графику переделывал с D3D на WPF.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.