关于WPF3D的ImageBrush

iloveaspnet2008 2011-10-20 02:06:29
在使用C#后台程序创建一个3D立方体时,Geometry的Material如下
DiffuseMaterial mydiff = new DiffuseMaterial();
ImageBrush myBrush= new ImageBrush();
myBrush.ImageSource =new BitmapImage(new Uri("Tree.jpg", UriKind.Relative));
mydiff .Brush = myBrush;
这样不能正常显示立方体,如果使用
DiffuseMaterial mydiff = new DiffuseMaterial(new SolidColorBrush(Colors.Red));可以显示出图形,请问上面的程序有什么问题吗?
在使用visualbrush时也遇到同样的问题
...全文
240 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yalan 2011-10-20
  • 打赏
  • 举报
回复
我勒个晕,敲代码的时候还没1楼呢~~~~1楼真快哈哈~~~
yalan 2011-10-20
  • 打赏
  • 举报
回复
SolidColorBrush是单色笔刷,用SolidColorBrush的话立方体所有的面都是由SolidColorBrush提供的Colors.Red来绘的,所以肯定不会有问题

而如果用ImageBrush笔刷的话要处理立方体和笔刷的MeshGeometry3D的TextureCoordinates属性。
在2D画刷中左上角点是原点坐标,而右下角点坐标为1,1。

例如,如果希望画刷的一部分映射到一个三角单元的表面上,那么该MeshGeometry3D应该写成:
<MeshGeometry3D TriangleIndices="0 1 2" Positions="0 1 0,-1 0 0,1 0 0" TextureCoordinates="0.25 0,1 1,0 0.5"/>

注意上面的TextureCoordinates属性部分
hhddzz 2011-10-20
  • 打赏
  • 举报
回复
要设置纹理坐标
TextureCoordinate
这样才能建立表面上的点和Brush中颜色之间的映射关系
SolidColorBrush就只有一种颜色,所有点都用那个颜色就行了,所以不需要设置TextureCoordinate

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧