Tôi cần Viewport3D
với mục đích duy nhất là tính toán hình học sử dụng Petzold.Media3D.ViewportInfo
. Tôi không muốn đặt nó trong một số Window
hoặc nói cách khác.Có thể điều khiển WPF có ActualWidth và ActualHeight nếu nó chưa bao giờ được hiển thị không?
Tôi đang cố gắng để thực hiện điều này bằng cách instantiating một Viewport3D
và thiết lập một vài thuộc tính bằng cách sử dụng C# phương pháp sau đây:
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;
}
Sau đó, tôi đang cố gắng sử dụng khung nhìn này để chuyển đổi vị trí chuột để một Vị trí 3D sử dụng phương pháp này:
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;
}
Thật không may, nó không hoạt động. Tôi nghĩ lý do là ActualWidth
và ActualHeight
của chế độ xem đều là số không (và đây là các thuộc tính chỉ đọc, vì vậy tôi không thể đặt chúng theo cách thủ công). (Lưu ý: Tôi đã thử nghiệm chính xác cùng một phương pháp với một thực tế rendered Viewport3D
, và nó làm việc tốt, vì vậy tôi biết vấn đề không phải là với phương pháp chuyển đổi của tôi.)
Bất kỳ ý tưởng làm thế nào tôi có thể nhận được WPF để gán ActualWidth
và ActualHeight
của điều khiển dựa trên cài đặt Width
và Height
?
tôi đã cố gắng thiết lập các HorizontalAlignment
và VerticalAlignment
để Left
và Top
, tương ứng, và tôi cũng sai lầm với MinWidth
và MinHeight
, nhưng không ai trong số các đặc tính này có bất kỳ ảnh hưởng đến ActualWidth
hoặc ActualHeight
.
Hoạt động như một sự quyến rũ, cảm ơn. – devuxer
Tuyệt, tôi rất vui vì nó hoạt động. Ngoài ra học được một cái gì đó mới ở đây. :) – gehho