我試圖託管在一個Viewport2DVisual3D表面的WPF的形式。我已經設置了相機,以便控件符合窗口的寬度。默認的幾何圖形將整個窗體映射到一個正方形的面上,所以有必要進行某種形式的變換以使曲面看起來像普通的二維窗體,而不是垂直拉伸。整體形式看起來不錯,但文字不能很好地擴展,它是模糊的,塊狀的,並且以不同的方式看起來很糟糕。這是我一直在努力,設定縱橫比:Viewport2DVisual3D在WPF文字模糊控制
- 一個ScaleTransform3D
- 設置網格定位到合適的寬高比
- 的TextureCoordinates設置到適當的長寬比
的前兩個讓我得到我想要的結果,除了塊狀/模糊的文本。我的結論是,字體渲染髮生在表單圖像被投影到3d表面之後發生縮放,所以無論如何它都會看起來很糟糕。有沒有人知道解決這個問題的方法或從一開始就設置它的方法?我不知道很多關於3D圖形,剛夠基本的數學讓相機角度權等
曾在Win 7和XP下測試。
一些我使用的資源:
- http://www.codeproject.com/KB/WPF/ContentControl3D.aspx
- http://pavanpodila.spaces.live.com/blog/cns!9C9E888164859398!151.entry
代碼的幾個片段:
<Viewport2DVisual3D.Geometry>
<MeshGeometry3D x:Name="FrontFaceGeometry"
Positions="-1,1,0 -1,-1,0 1,-1,0 1,1,0"
TextureCoordinates="0,0 0,1 1,1 1,0"
TriangleIndices="0 1 2 0 2 3"/>
</Viewport2DVisual3D.Geometry>
...
<Grid Width="500" x:Name="FrontFaceGrid">
然後在Window_Loaded例程,例如
var aRatio = FrontFaceGrid.ActualHeight/FrontFaceGrid.ActualWidth;
FrontFaceGeometry.Positions[0] = new System.Windows.Media.Media3D.Point3D(-1, aRatio, 0);
FrontFaceGeometry.Positions[1] = new System.Windows.Media.Media3D.Point3D(-1, -aRatio, 0);
FrontFaceGeometry.Positions[2] = new System.Windows.Media.Media3D.Point3D(1, -aRatio, 0);
FrontFaceGeometry.Positions[3] = new System.Windows.Media.Media3D.Point3D(1, aRatio, 0);
您正在使用什麼版本的.NET的? – 2010-11-12 17:32:21
我在.NET 4.0上。 – flatline 2010-11-12 18:12:37
你試過SnapsToDevicePixels =「True」 – 2012-11-05 06:09:49