使用位图作为圆锥体的 alpha 贴图

发布于 2024-09-05 19:44:16 字数 275 浏览 3 评论 0原文

我想知道是否可以使用位图在 wpf 3d 中设置圆锥体的 alpha 通道:

Black = > alpha = 0%

白色 => alpha = 100 %(更可能是 80 % 以查看内部 alpha 差异...)

替代文本 http:// www.visualdmx.fr/bitmap_alpha.png

I'm wondering if i can use a bitmap to set alpha channel of a cone in wpf 3d :

Black = > alpha = 0 %

white => alpha = 100 % (more probably 80 % to see inside alpha difference ...)

alt text http://www.visualdmx.fr/bitmap_alpha.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫卆 2024-09-12 19:44:16

WPF 没有任何内置机制来实现这一点。我认为最简单的方法是:

  1. 使用跟踪库(例如 Lie Ryan 提到的 potrace)将位图转换为几何图形。
  2. 使用 GetFlattenedPathGeometry() 将几何图形简化为折线
  3. 将生成的几何图形中的每个线段转换为从 (x,y,0) 到 (0,0,z) 的 3D 三角形,其中“z”是圆锥体的高度。
  4. 构建 MeshGeometry3D 的 Positions 和 TriangleIndices 并将其材质设置为具有所需不透明度的 SolidColorBrush。

步骤 2-4 都非常简单。从选择适当的第三方位图跟踪库并找出从 C# 调用它所需的任何 P/Invoke 或 COM Interop 的角度来看,步骤 1 可能很困难。使用 BitmapSource.CopyPixels 获取要传递到库的位,并通过在打开的 StreamGeometry (StreamGeometry.Open) 上绘制来根据结果构造几何图形。

WPF doesn't have any built-in mechanism for this. I think the easiest way is to:

  1. Convert the Bitmap to a Geometry using a tracing library such as the potrace mentioned by Lie Ryan.
  2. Simplify the Geometry to a polyline using GetFlattenedPathGeometry()
  3. Convert each line segment in the resulting geometry into a 3D triangle from (x,y,0) to (0,0,z) where "z" is the height of the cone.
  4. Build the Positions and TriangleIndices of a MeshGeometry3D and set its Material to a SolidColorBrush with the desired opacity.

Steps 2-4 are all extremely easy. Step 1 may be difficult from the standpoint of selecting an appropriate third-party bitmap tracing library and figuring out any P/Invoke or COM Interop required to call it from C#. Use BitmapSource.CopyPixels to get the bits to pass to the libraray and construct the Geometry from the result by drawing on an open StreamGeometry (StreamGeometry.Open).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文