gpt4 book ai didi

wpf - WPF 控件上的 Viewport2DVisual3D 模糊文本

转载 作者:行者123 更新时间:2023-12-04 06:41:35 25 4
gpt4 key购买 nike

我正在尝试在 Viewport2DVisual3D 表面上托管 WPF 表单。我已经设置了相机,使控件适合窗口的宽度。默认几何图形将整个形状映射到一个正方形面上,因此有必要进行某种转换以使表面看起来像一个常规的 2d 形状,并且不会出现垂直拉伸(stretch)。表格整体看起来还不错,但文本不能很好地缩放,它是模糊和 block 状的,并且从一行到另一行看起来都很糟糕。这是我尝试设置纵横比的内容:

  • ScaleTransform3D
  • 将网格位置设置为适当的纵横比
  • 将 TextureCoordinates 设置为正确的纵横比

  • 前两个给我我想要的结果,除了 block 状/模糊的文本。我在这一点上的结论是,字体渲染是在表单图像投影到 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);

    最佳答案

    为避免文本模糊和其他视觉失真,使 3D XY 纵横比等于 2D 控制纵横比。这是通过设置 X 和 Y MeshGeometry3D.Positions 来实现的。例如,大小为 500x700 的 2D 控件可以通过指定位置映射到矩形 3D 网格而不会失真

    <Viewport2DVisual3D.Geometry>
    <MeshGeometry3D x:Name="FrontFaceGeometry"
    Positions="-2.5,3.5,0 -2.5,-3.5,0 2.5,-3.5,0 2.5,3.5,0"
    TextureCoordinates="0,0 0,1 1,1 1,0"
    TriangleIndices="0 1 2 0 2 3"/>
    </Viewport2DVisual3D.Geometry>

    在 3D 环境中显示的 2D 控件的图像始终“拉伸(stretch)”到网格的尺寸。

    关于wpf - WPF 控件上的 Viewport2DVisual3D 模糊文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167049/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com