Использование растрового изображения в качестве альфа-карты конуса - PullRequest
0 голосов
/ 14 июня 2010

Мне интересно, могу ли я использовать растровое изображение для установки альфа-канала конуса в wpf 3d:

Black => alpha = 0%

white => alpha = 100%(более вероятно, 80%, чтобы увидеть разницу внутри альфа ...)

альтернативный текст http://www.visualdmx.fr/bitmap_alpha.png

1 Ответ

0 голосов
/ 15 июня 2010

WPF не имеет встроенного механизма для этого.Я думаю, что самый простой способ - это:

  1. Преобразовать растровое изображение в геометрию, используя библиотеку трассировки, такую ​​как potrace, упомянутую Ли Райаном.
  2. Упростить геометрию до полилинии, используя GetFlattenPathGeometry()
  3. Преобразовать каждый отрезок линии в результирующей геометрии в трехмерный треугольник из (x, y, 0) в (0,0, z), где «z» - высота конуса.
  4. Создайте позиции и треугольные элементы MeshGeometry3D и установите для его материала значение SolidColorBrush с желаемой непрозрачностью.

Шаги 2-4 чрезвычайно просты.Шаг 1 может быть сложным с точки зрения выбора подходящей сторонней библиотеки трассировки растровых изображений и определения любого P / Invoke или COM-взаимодействия, необходимого для вызова его из C #.Используйте BitmapSource.CopyPixels, чтобы получить биты для передачи в библиотеку и построить геометрию из результата, используя открытую StreamGeometry (StreamGeometry.Open).

...