WPF TabControl, rounded TabItem
Есть замечательный пример, как сделать закладки с закруглёнными краями с помощью модификации стиля WPF TabControl и TabItem, но он не поддерживает нижнее расположение закладок TabStripPlacement=»Bottom».
Небольшая модификация примера позволила расположить закладки снизу. Загрузите Полный исходный код для VisualStudio 2010, с 3-имя вариантами TabControl и изменением стиля для нижнего расположения закладок.
ДалееSharpmap, GDAL, OziExplorer OZF2, OZF3
Уже давно, я задумывался об одновлении Particler — программы для визуализации и рендера GPS треков на карте и для наложения GPS данных на видео. Программа требует обновления картографического движка, и новый движок должен быть open source, написан для .net или с возможностью работы с ним из .net и уметь работать как с растровыми, так и векторными данными. А также обязательно поддерживать формат OziExplorer MAP/OZF2/OZF3. Поддержка OziExplorer необходима, т.к. несмотря на широкое распространение в последние годы векторных карт, они хороши в основном для тех мест, где есть дороги, а для туристов всё же основными остаются старые, добрые карты ген. штаба.
Всем перечисленным требованиям удовлетворяет картографический движок Sharpmap. Но заставить его понимать OZF, оказалось не просто.
Terrain Viewer — MDX/SlimDX Demo
Создаём Portable версию Terrain Viewer
Теперь немного улучшим демонстрационное приложение Terrain Viewer. Эти преобразования не касаются DirectX.
Для создания переносимой или portable версии приложения, желательно, чтобы все требуемые ресурсы размещались в самом файле приложения. В тоже время мы оставим возможность приложению работать с отдельным файлом maps.xml.
Добавим минимально необходимые для работы программы внешние файлы Application.ico maps.xml Earth_Map.png default_sky.jpg default_side.png default_texture.png sample_dem.bil sample_texture.png в проект в каталог Resources и установим для них всех Build Action «Embedded Resource».
Managed DirectX, конвертация из MDX в SlimDX (3/3)
Продолжаем миграцию Managed DirectX в SlimDX framework, на примере MDX приложения Патрика Мурриса Terrain Viewer.
Как и раньше, в виде комментариев показан Managed DirectX код, и рядом с ним новый код, работающий с SlimDX.
ДалееManaged DirectX, конвертация из MDX в SlimDX (2/3)
Начинаем миграцию Managed DirectX в SlimDX framework, на примере MDX приложения Патрика Мурриса Terrain Viewer.
В виде комментариев показан Managed DirectX код, и рядом с ним новый код, работающий с SlimDX.
ДалееСохраняем AVI файл из WPF
Собственно сохранение скриншотов WPF программы с помощью RenderTargetBitmap и BitmapEncoder не новость. Сложнее сохранить анимацию и не просто в набор картинок, а сразу в AVI файл.
Мне удалось найти только один способ сделать это, с использованием весьма старой библиотеки http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx Библиотека предназначена для работы с AVI файлами из .NET, написана на C# и работает даже на .NET 1.1.
Если вы знаете другой способ, подскажите!
Если вы хотите работать с AVI из WPF, посмотрите сразу другой пример http://blogs.msdn.com/b/saveenr/archive/2008/09/22/wpf-xaml-saving-an-animation-as-an-avi-video-file.aspx
Пример хороший, но передавать Bitmap через файл слишком накладно, лучше использовать MemoryStream.
BmpBitmapEncoder encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(renderTargetBitmap)); using (MemoryStream stream = new MemoryStream()) { encoder.Save(stream); System.Drawing.Bitmap drawingBitmap = new System.Drawing.Bitmap(stream); aviStream.AddFrame(drawingBitmap); }
Сохранение AVI было необходимо для улучшения программы Particler, поэтому пришлось провести серию экспериментов.
ДалееРасширение KML Geometry — Circle
В стандарте KML нет геометрии круга или окружности. Небольшой пример на C#, как программно нарисовать окружность с помощью LineString (примеры на других языках есть, а вот для C# не гугляться — этот будет первый).
ДалееManaged DirectX, конвертация из MDX в SlimDX (1/3)
Как обстоят дела с использование DirectX в .NET?
Состояние дел на текущий момент:
1. Имеется «чистый» DirectX, с которым напрямую, без interop обёртки работать из .NET невозможно.
2. Не обновляемый и официально закрытый с 2006-го года проект от Microsoft — MDX (Managed DirectX). Вышла версия 1.1, версия 2.0 вышла только в бете, после чего MS прикрыло этот проект, порекомендовав разработчикам следующее:
Использовать либо чистый DirectX «для профессионалов», XNA «для энтузиастов» или XNA с отчислениями в MS если вы хотите разрабатывать сетевые игры с использованием XNA или игры под Xbox360.
3. XNA — SDK для разработки игровых 2D и 3D приложения в .NET. Включает продукт XNA Game Studio, который интегрируется с Visual Studio 2008 и позволяет вести удобную разработку с XNA. 3-я версия XNA Game Studio позволяет разрабатывать приложения под Windows, Xbox360 и Zune. А последняя, 4-я версия, на текущий момент существующая в бета версии позволит вести разработки и для Windows 7 Phone. Из недостатков — существенные изменения API от версии к версии.
Если вы разрабатываете 2D или 3D игры под эти платформы, ваш выбор — использовать XNA.
Но, что, если наша задача — не разработка игр, а некое более абстрактное использование 3D графики с перевесом в сторону «чистого» использования DirectX, но под .NET?
4. Остаётся последний путь. Open source проект SlimDX — тонкая обёртка над DirectX, обеспечивает работу с DirectX из .NET. С библиотеками SlimDX можно работать из .NET 2.0, однако без проблем эти же библиотеки можно использовать и из .NET 4.0, причём без перекомпиляции исходников SlimDX как советуют некоторые источники.
Вот именно на нём мы и остановимся (дальше о конвертации MDX кода в SlimDX).
Далее
Свежие комментарии