以Xamarin形式获取不需要的裁剪图像

时间:2016-11-16 20:16:35

标签: c# layout xamarin view xamarin.forms

我是xamarin的新手,我正在尝试使用xaml了解视图和图像的基本位置。

这是我的xaml:

   <ContentPage.Content>
        <StackLayout Spacing="10"
                     x:Name="layout"
                     VerticalOptions="FillAndExpand">
            <Button Text="StackLayout"
              VerticalOptions="Start"
              HorizontalOptions="FillAndExpand"
              Clicked="OnButtonClicked"/>
            <BoxView x:Name="myBoxView"
               Color="Yellow"
               VerticalOptions="FillAndExpand"
               HorizontalOptions="FillAndExpand" />
            <Image x:Name="myImageView"
                   Source="circles2.jpg"
                   Aspect="AspectFit" 
                   VerticalOptions="Center"
                   HorizontalOptions="FillAndExpand"/>
            <Image x:Name="streamedImageView"
                   Source="squares.bmp"
                   Aspect="AspectFit"
                   VerticalOptions="Center"
                   HorizontalOptions="FillAndExpand"/>
        </StackLayout>
    </ContentPage.Content>

程序加载时,显示的是:

  1. 大约三分之一的屏幕是黄色的

  2. “circles2.jpg”图片非常小(小于图标)。它看起来像吹黄色的盒子。

  3. “squares.bmp”图片占据了整个剩余空间。

  4. 如果我将“circles2.jpg”更改为“triangles.bmp”,那么它会占用所有可能的水平空间,而“squares.bmp”也会占用尽可能多的水平空间,但是CROPS AT屏幕的底部,因为没有屏幕。

    从我迄今为止所做的所有研究中,我认为不应该发生任何意见 - 他们都应该找到适合屏幕的方式。

    我做错了什么? 如何让.bmp图片保持在屏幕范围内?

    感谢。

1 个答案:

答案 0 :(得分:0)

你应该了解图像控制属性:

参考:https://developer.xamarin.com/guides/xamarin-forms/working-with/images/

  1. 填充 - 将图像拉伸到完全并准确填充显示区域。这可能会导致图像失真。

  2. AspectFill - 剪切图像,使其填充显示区域,同时保留纵横比(即无失真)。

  3. AspectFit - 将图像装入信箱(如果需要),以便整个图像适合显示区域,顶部/底部或侧面添加空白,具体取决于图像是宽还是高。

  4. 你使用AspectFit作为circles2.jpg并使用Horizo​​ntalOptions =“FillAndExpand”图像控件将足够长的时间来放置你的circles2.jpg。 如下图所示,蓝色是图像控制,红色是你的circles2.jpg 。当你的circles2.jpg足够大时,图像控制会分散注意力。

    enter image description here

    如何让.bmp图片保持在屏幕范围内?

    StackLayout不适合你.RelativeLayout应该更好:

    https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/relative-layout/