Масштабируемое изображение в Windows Phone 7 - PullRequest
6 голосов
/ 31 июля 2011

Я пытаюсь сделать изображение масштабируемым в приложении Windows Phone 7.(код ниже), однако это не работает, изображение не отображается.Может кто-нибудь поставить меня на правильный путь, это правильный контроль для использования?Если это то, что я делаю не так?

        <controls:PivotItem Name="Header" Header="item1">
            <Grid>
                <MultiScaleImage Name="mainImage" />
            </Grid>
        </controls:PivotItem>

        var imageurl = loginxml.Descendants("response").Elements("submissions").Elements("submission").Elements("file_url_screen").First().Value;
        //imageurl = https://inkbunny.net///files/screen/165/165693_CobaltHusky_random_anatomy_doodles.png
        Header.Header = loginxml.Descendants("response").Elements("submissions").Elements("submission").Elements("title").First().Value;
         DeepZoomImageTileSource img = new DeepZoomImageTileSource(new Uri(imageurl));
        mainImage.Source = img;

РЕДАКТИРОВАТЬ Чтение msdn на MultiScaleImage, которое не используется для управления.Требуется определенный источник изображения (не растровое изображение / jpg)

Ответы [ 2 ]

8 голосов
/ 13 сентября 2011

URL-адрес для DeepZoomImageTileSource - это не URL-адрес изображения, а URL-адрес файла XML со списком изображений, которые будут использоваться для плиток с глубоким увеличением.

Я реализовал простое масштабируемое изображение следующим образом, используя набор инструментов silverlight:

<Image Name="MainImage" RenderTransformOrigin="0.5,0.5" CacheMode="BitmapCache">
    <Image.RenderTransform>
        <CompositeTransform x:Name="transform" />
    </Image.RenderTransform>
    <toolkit:GestureService.GestureListener>
        <toolkit:GestureListener PinchStarted="OnPinchStarted" PinchDelta="OnPinchDelta" />
    </toolkit:GestureService.GestureListener>
</Image>

и в коде:

MainImage.Source = new BitmapImage(new Uri(url));

Затем объявите две переменные для вашего угла и масштаба:

double initialAngle;
double initialScale;

А затем обработать события жеста:

private void OnPinchStarted(object sender, PinchStartedGestureEventArgs e)
{
    initialAngle = transform.Rotation;
    initialScale = transform.ScaleX;
}

private void OnPinchDelta(object sender, PinchGestureEventArgs e)
{
    //transform.Rotation = initialAngle + e.TotalAngleDelta;
    transform.ScaleX = initialScale * e.DistanceRatio;
    transform.ScaleY = initialScale * e.DistanceRatio;
}

Раскомментируйте линию вращения, если вы хотите также обработать поворот изображения.

Sam

0 голосов
/ 19 сентября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...