dev*_*xer 5 3d wpf wpf-controls actualwidth actualheight
我需要一个Viewport3D
用于进行几何计算的唯一目的Petzold.Media3D.ViewportInfo
.我宁愿不把它放在一个Window
或以其他方式呈现它.
我试图通过Viewport3D
使用以下C#方法实例化并设置一些属性来实现此目的:
private Viewport3D CreateViewport(MainSettings settings)
{
var cameraPosition = new Point3D(0, 0, settings.CameraHeight);
var cameraLookDirection = new Vector3D(0, 0, -1);
var cameraUpDirection = new Vector3D(0, 1, 0);
var camera = new PerspectiveCamera
{
Position = cameraPosition,
LookDirection = cameraLookDirection,
UpDirection = cameraUpDirection
};
var viewport = new Viewport3D
{
Camera = camera,
Width = settings.ViewportWidth,
Height = settings.ViewportHeight
};
return viewport;
}
Run Code Online (Sandbox Code Playgroud)
稍后,我正在尝试使用此视口使用此方法将鼠标位置转换为3D位置:
public Point3D? Point2dToPoint3d(Point point)
{
var range = new LineRange();
var isValid = ViewportInfo.Point2DtoPoint3D(_viewport, point, out range);
if (isValid)
return range.PointFromZ(0);
else
return null;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它没有用.我认为原因是视口ActualWidth
和ActualHeight
视图都是零(这些是只读属性,所以我不能手动设置它们).(注意:我已经使用实际渲染测试了完全相同的方法Viewport3D
,并且它工作正常,所以我知道问题不在于我的转换器方法.)
知道如何让WPF 根据和设置分配ActualWidth
和ActualHeight
控制?Width
Height
我尝试设置HorizontalAlignment
与VerticalAlignment
以Left
和Top
分别,我也乱用MinWidth
和MinHeight
,但没有这些属性对的任何影响ActualWidth
或ActualHeight
.
从MSDN主题的ActualWidth
属性:
此属性是基于其他宽度输入和布局系统的计算值.该值由布局系统本身根据实际渲染过程设置,因此可能略微落后于作为输入更改基础的宽度等属性的设置值.
因此,这听起来像是要设置属性所需的渲染过程.但是,您可以尝试调用Measure(Size)
然后Arrange(Rect)
模拟布局过程.也许这已经足够了.
归档时间: |
|
查看次数: |
1342 次 |
最近记录: |