如何在C#中绘制长方体

gjfkoo 2008-10-19 12:01:03
小弟最近在写一个程序,其中有一个模块要实现的效果是输入长宽高输出一个箱子,请问该如何实现
...全文
880 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shao200 2011-02-28
  • 打赏
  • 举报
回复
用wpf比较简单:
<Viewport3D x:Name="Cft" ClipToBounds="true" Width="400" Height="300">

<Viewport3D.Camera>

<PerspectiveCamera x:Name="FrontOR6" FarPlaneDistance="10" LookDirection="0,0,-1" UpDirection="0,1,0" NearPlaneDistance="1" Position="0,0,2.38587" FieldOfView="39.5978" />
</Viewport3D.Camera>


<ModelVisual3D>
<ModelVisual3D.Content>

<Model3DGroup x:Name="Scene">

<Model3DGroup.Transform>

<Transform3DGroup>

<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>

<ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>

<RotateTransform3D>


<RotateTransform3D.Rotation>

<AxisAngleRotation3D Angle="0" Axis="0 1 0"/>

</RotateTransform3D.Rotation>

</RotateTransform3D>

<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>

</Transform3DGroup>

</Model3DGroup.Transform>

<AmbientLight Color="#333333" />

<DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />

<DirectionalLight Color="#FFFFFF" Direction="0.612372,-0.5,-0.612372" />


<Model3DGroup x:Name="BoxOR9">


<Model3DGroup.Transform>

<Transform3DGroup>

<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>

<ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>

<RotateTransform3D>

<RotateTransform3D.Rotation>

<AxisAngleRotation3D Angle="95.4748375" Axis="0.1056123828 0.2149696301 -0.9708934456"/>

</RotateTransform3D.Rotation>

</RotateTransform3D>

<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>

</Transform3DGroup>

</Model3DGroup.Transform>

<GeometryModel3D x:Name="BoxOR9GR10">

<GeometryModel3D.Material>

<MaterialGroup>

<DiffuseMaterial>


<DiffuseMaterial.Brush>

<ImageBrush ImageSource="./xaml库ER_42_TileMR1.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 1 1" AlignmentX="Left" AlignmentY="Top" Opacity="1.000000" />

</DiffuseMaterial.Brush>

</DiffuseMaterial>

</MaterialGroup>

</GeometryModel3D.Material>

<GeometryModel3D.BackMaterial>

<MaterialGroup>

<DiffuseMaterial>

<DiffuseMaterial.Brush>

<ImageBrush ImageSource="./xaml库ER_42_TileMR1.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0 0 1 1" AlignmentX="Left" AlignmentY="Top" Opacity="1.000000" />

</DiffuseMaterial.Brush>

</DiffuseMaterial>

</MaterialGroup>

</GeometryModel3D.BackMaterial>

<GeometryModel3D.Geometry>

<MeshGeometry3D

TriangleIndices="0,1,2 2,3,0 4,5,6 6,7,4 8,9,10 10,11,8 12,13,14 14,15,12 16,17,18 18,19,16 20,21,22 22,23,20 "


Normals="0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 1,0,0 1,0,0 1,0,0 1,0,0 0,1,0 0,1,0 0,1,0 0,1,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 "

TextureCoordinates="1,1 1,5.96046e-008 -0,5.96046e-008 -0,1 0,1 1,1 1,5.96046e-008 0,5.96046e-008 0,1 1,1 1,0 0,0 1,1 1,5.96046e-008 -0,5.96046e-008 -0,1 1,0 0,0 0,1 1,1 0,5.96046e-008 0,1 1,1 1,5.96046e-008 "

Positions="-0.5,-0.785,-0.5 -0.5,0.785,-0.5 0.5,0.785,-0.5 0.5,-0.785,-0.5 -0.5,-0.785,0.5 0.5,-0.785,0.5 0.5,0.785,0.5 -0.5,0.785,0.5 -0.5,-0.785,-0.5 0.5,-0.785,-0.5 0.5,-0.785,0.5 -0.5,-0.785,0.5 0.5,-0.785,-0.5 0.5,0.785,-0.5 0.5,0.785,0.5 0.5,-0.785,0.5 0.5,0.785,-0.5 -0.5,0.785,-0.5 -0.5,0.785,0.5 0.5,0.785,0.5 -0.5,0.785,-0.5 -0.5,-0.785,-0.5 -0.5,-0.785,0.5 -0.5,0.785,0.5 "

/>

</GeometryModel3D.Geometry>

</GeometryModel3D>

</Model3DGroup>
</Model3DGroup>

</ModelVisual3D.Content>

</ModelVisual3D>

</Viewport3D>


</Canvas>

gjfkoo 2008-10-21
  • 打赏
  • 举报
回复
没有调用DX的情况下已经绘制出来了,谢谢以上各位
gjfkoo 2008-10-20
  • 打赏
  • 举报
回复
绘制出来的是长方形啊,我是指长方体,就是三维的,带高的长方形
CraxyMouse 2008-10-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 gjfkoo 的回复:]
绘制出来的是长方形啊,我是指长方体,就是三维的,带高的长方形
[/Quote]
多思考一下就明白了!!

gjfkoo 2008-10-20
  • 打赏
  • 举报
回复
不用在浏览器实现的,好像调用DX就可以了吧?
gjfkoo 2008-10-20
  • 打赏
  • 举报
回复
调用DX可以吗?需要怎样实现呢
CraxyMouse 2008-10-19
  • 打赏
  • 举报
回复
protected override void OnPaint(PaintEventArgs e)
{


e.Graphics.DrawRectangle(Pens.Blue, new Rectangle(20, 20, 100, 100));
}
gjfkoo 2008-10-19
  • 打赏
  • 举报
回复
能具体点说一下思路或者提供部分代码吗》
IMAGSE 2008-10-19
  • 打赏
  • 举报
回复
用vml+xml吧~
liuhelong 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dunao 的回复:]
protected override void OnPaint(PaintEventArgs e)
{


e.Graphics.DrawRectangle(Pens.Blue, new Rectangle(20, 20, 100, 100));
}
[/Quote]

jf
Deathsign 2008-10-19
  • 打赏
  • 举报
回复
如果你是WEB的画

你先在另外一个页里面(A)把该页输出成JPG
然后用GDI+在A里面画好 然后用一个Img接受就行了···


长宽可以传个URL参数给A····
Deathsign 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dunao 的回复:]
protected override void OnPaint(PaintEventArgs e)
{


e.Graphics.DrawRectangle(Pens.Blue, new Rectangle(20, 20, 100, 100));
}
[/Quote]


正解
gjfkoo 2008-10-19
  • 打赏
  • 举报
回复
请各位高手提供一点思路,小弟水平尚浅
CraxyMouse 2008-10-19
  • 打赏
  • 举报
回复
那就是用WPF!我还在学习中
gjfkoo 2008-10-19
  • 打赏
  • 举报
回复
如果用vml+xml具体思路是怎样
该程序包专注于在三维点集数据识别并建模长方体结构,广泛应用于视觉计算、数据建模及智能系统开发等领域。该MATLAB工具集包含多个功能模块,用于实现从原始点云数据提取长方体参数的完整流程。以下为各组件的核心功能说明: 1. **minSet.m**:该模块用于筛选点集的关键子集,例如最小包围体积的结构元素,从而优化后续计算步骤的性能。 2. **CuboidRANSAC.m**:基于RANSAC框架,该函数用于从带有噪声的点数据拟合长方体模型,通过迭代随机采样和模型验证,实现鲁棒性建模。 3. **boundTest.m**:用于判断某一点是否位于拟合后的长方体内部,为模型评估提供基础支持。 4. **DisplayModel.m**:实现拟合结果的可视化展示,通过图形界面或图形输出,提升结果的可解释性。 5. **planePlot.m**:用于绘制长方体的六个面,以直观展示其空间分布与几何特性。 6. **RansacScore.m**:评估RANSAC算法的拟合质量,通常根据内点数量与总点数的比例来判断模型的可靠性。 7. **runme.m**:作为主控脚本,协调各子模块的执行流程,涵盖数据准备、模型构建、结果分析与展示等环节。 8. **isrot.m**:验证矩阵是否为旋转矩阵,用于确定长方体的朝向信息,确保模型参数的合理性。 9. **corner2para.m**:将长方体顶点坐标转换为结构参数,如心点、长宽高及旋转角度,便于后续计算与分析。 10. **para2corner.m**:将参数形式还原为顶点坐标,便于获取具体的几何信息。 该工具集提供了一套完整的三维长方体拟合方法,适用于点云数据处理、结构识别及空间建模等任务,具备良好的实用性和可扩展性。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!

111,120

社区成员

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

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

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