c# - 在 3D 空间中旋转图像的一部分

标签 c# .net wpf gdi+ image-manipulation

设置如下:这是一个电子商务艺术网站,其中一些画作是 Canvas 转移。这幅画环绕 Canvas 的侧面、顶部和底部。我们拥有整幅画的高分辨率图像,但我们想要显示的是图像的准 3D 表示,您可以在其中看到画作的侧面如何环绕 Canvas 。以下是我所讨论内容的粗略概述:

alt text

我的问题是,如何在 3D 空间中旋转图像?我认为我想要采取的方法是剪掉图像顶部和侧面的一部分,然后以 3D 方式旋转,然后将其缝合回顶部和侧面以赋予其 3D 外观。我该怎么做呢?它可以使用任何 .Net 技术(GDI+、WPF 等)来完成。

最佳答案

在 WPF 中,使用 ViewPort3D 类您可以创建一个 8x5x1 单位的长方体。创建图像作为纹理,然后使用纹理坐标将纹理应用到正面 (8x5)、侧面 (5x1) 以及顶面和底面 (8x1)。正面坐标应为:正面的(1/9, 1/6)、(8/9, 1/6)、(1/9, 5/6) 和(8/9, 5/6) ,以及从最近的边到边的坐标,例如左侧:(0, 1/6)、(1/9, 1/6)、(0, 5/6) 和 (1/9, 5/6) 左侧。

编辑: 如果您希望能够在 3D Canvas 模型上执行旋转,您可以按照此处的建议进行操作: How can I do 3D transformation in WPF?

关于c# - 在 3D 空间中旋转图像的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435756/

相关文章:

c# - 从 Controller 导出数据到 CSV

c# - 当使用 MVVM 更改一行 DataGrid 时将更改应用于模型

c# - 每个程序集一个命名空间?

c# - 检测何时跳出循环

c# - WPF中的Web浏览器控件

c# - 在将null传递给C#中的函数时,消除歧义

c# - MSBuild 中出现错误 CS0840,但 VS2015 中没有错误

c# - 单击后更改按钮文本,然后再次单击后将其更改回

c# - WPF 数据绑定(bind)网格缩放

wpf - 数据触发器中的标记扩展