Я создал простую 2D-игру в XNA для Windows и Xbox. Я нахожусь в процессе переноса этой игры на Silverlight 5 (на момент написания этой статьи, все еще в RC), который поддерживает SpriteBatch, Texture2D и все виды других вкусностей XNA, которые я использую в своей игре. Я успешно перенес большую часть своего кода в Silverlight, но все еще борюсь с проблемами разрешения / размера.
Мой исходный код и контент настроены для работы с разрешением 1280x720 - и я хочу сохранить его таким - но я хочу встроить игру Silverlight на веб-страницу с более управляемой размер: 640x360 (половина его исходного размера).
Итак, мой вопрос таков: Как мне сжать все приложение Silverlight до 50% от его первоначального размера ?
Я думаю, что я на правильном пути, но я не могу заставить его работать. Я обнаружил RenderTransform
и ScaleTransform
элементы XAML, и они, похоже, почти выполняют то, что я ищу, но не совсем. Мой XAML выглядит так:
<!-- Some attributes omitted for brevity -->
<UserControl x:Class="Silverlight3dApp.MainPage"
d:DesignWidth="1280"
d:DesignHeight="720">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RenderTransform>
<ScaleTransform x:Name="Scale" ScaleX="0.5" ScaleY="0.5" />
</Grid.RenderTransform>
<DrawingSurface x:Name="myDrawingSurface" Draw="myDrawingSurface_Draw" />
</Grid>
</UserControl>
И мой HTML-объект выглядит так:
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2"
width="640"
height="360">
<!-- etc. -->
</object>
Таким образом, для встроенного HTML-объекта задано значение 640x360 (по желанию), а для приложения Silverlight - 1280x720, но затем оно масштабировано до 0,5 для ScaleX и ScaleY. Этот вид работает; размер приложения сокращается до 50%, но содержимое отображается обрезано . Я вижу только верхний левый квадрант, поэтому вижу только содержимое размером 320x180 (что было бы 640x360 при исходном размере).
X на этом грубом чертеже показывают, где я вижу содержимое во встроенном объекте Silverlight, все остальное резко обрезано и пусто:
___________
|XXXXX |
|XXXXX | 360px
| |
|___________|
640px
Я нуб Silverlight, поэтому у меня такое чувство, что я упускаю что-то очевидное. Есть идеи?