Thêm giải thích rõ hơn cho câu trả lời: Một điều mà tài liệu mô tả không được đề cập ở đây là biến đổi tương đối được điều chỉnh trong sự kiện OnOrientationChanged. Một khác biệt khác là biến đổi tương đối không được chỉ định trong XAML.
Trong các tài liệu (How to: Create a Base Camera Application for Windows Phone), hình chữ nhật được làm đầy với các videobrush như sau:
<!--Camera viewfinder >-->
<Rectangle Width="640" Height="480"
HorizontalAlignment="Left"
x:Name="viewfinderContainer">
<Rectangle.Fill>
<VideoBrush x:Name="viewfinderBrush" />
</Rectangle.Fill>
</Rectangle>
Sau đó, trong code-behind, sự kiện OnOrientationChanged quay hình chữ nhật dựa trên khuynh hướng:
// Ensure that the viewfinder is upright in LandscapeRight.
protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
if (e.Orientation == PageOrientation.LandscapeRight)
{
viewfinderBrush.RelativeTransform =
new CompositeTransform() { CenterX = 0.5, CenterY = 0.5, Rotation = 180 };
}
else
{
viewfinderBrush.RelativeTransform =
new CompositeTransform() { CenterX = 0.5, CenterY = 0.5, Rotation = 0 };
}
base.OnOrientationChanged(e);
}
Mã trong chủ đề này (tương ứng với mẫu) được định cấu hình để chỉ sử dụng hướng ngang, có thể đây là lý do bạn chỉ nhận được hình ảnh ngang (?) Lúc đầu, các thuộc tính sau được thêm vào điện thoại: PhoneApplicationPage e lement trong MainPage.xaml:
SupportedOrientations="Landscape" Orientation="LandscapeLeft"
Nếu bạn vẫn đang nhận được hình ảnh định hướng không đúng cách, đồng bộ hóa hình ảnh của bạn để máy tính của bạn và xem họ đang định hướng một cách chính xác trong khi xem chúng ở đó (trên máy tính của bạn). Nó có thể là một lỗi với bản Beta khiến cho hình ảnh không xuất hiện chính xác trên thiết bị.
Hy vọng điều đó sẽ hữu ích. Chúc mừng
bạn đã đặt SuppoertedOrientations = "PortraitOrLandscape" chưa? –
Tôi đặt nó thành Portrait –
Điều này có nghĩa là nó sẽ không tạo ra sự khác biệt nào nếu bạn đặt nó thành PortraitOrLandscape không? –