【问题标题】:Xamarin Forms Overstreched imageXamarin 表单过度拉伸图像
【发布时间】:2020-07-05 11:06:09
【问题描述】:

我有问题。我在我的代码中使用以下扩展: https://github.com/andreinitescu/IconApp

有了它,我可以控制图像的颜色。我在自己的代码中实现了这一点:

<StackLayout Orientation="Vertical">
    <StackLayout HeightRequest="70" BackgroundColor="#013252" Orientation="Horizontal" HorizontalOptions="FillAndExpand">
        <Image Source="arrow_back" VerticalOptions="CenterAndExpand" HeightRequest="30" Margin="10,0,0,0">
            <Image.GestureRecognizers>
                <TapGestureRecognizer Tapped="btnBack_Clicked" />
            </Image.GestureRecognizers>
        </Image>

        <Label x:Name="txtDeviceName" TextColor="White" FontSize="30" VerticalOptions="CenterAndExpand" HorizontalOptions="StartAndExpand" Margin="10,0,0,0" />
    </StackLayout>

    <Grid Padding="0" HorizontalOptions="FillAndExpand" Margin="40,30,40,0" x:Name="gridLedstrip" HeightRequest="0">
        <controls:IconView x:Name="imgLedstrip" Source="ledstrip" BackgroundColor="White" />
    </Grid>


    <Grid Padding="0" HorizontalOptions="FillAndExpand" Margin="40,30,40,0" x:Name="gridCanvas" HeightRequest="500" IsVisible="False">
        <views:SKCanvasView x:Name="skiaView"
                PaintSurface="OnCanvasViewPaintSurface" />
        <Grid.Effects>
            <tt:TouchEffect Capture="True"
                TouchAction="OnTouchEffectAction" />
        </Grid.Effects>
    </Grid>

    <Label Text="BRIGHTNESS" TextColor="White" FontSize="20" Margin="40,0,40,0" />
    <StackLayout Orientation="Horizontal" Margin="40,0,40,0">
        <Slider x:Name="sliderBrightness" Minimum="0" Maximum="100" VerticalOptions="CenterAndExpand"
                HorizontalOptions="FillAndExpand" ValueChanged="sliderBrightness_ValueChanged" DragCompleted="sliderBrightness_DragCompleted" />
        <Label x:Name="txtBrightness" TextColor="White" FontSize="18" />
    </StackLayout>

</StackLayout>

现在的问题是当您查看图像大小时 ledstrip.png 是一个正方形,因为它是 600x600,但是当我将它显示在黑色背景的屏幕上时,我可以看到这个 IconView 在高度。如何使高度等于宽度。

我已经试过了:

gridLedstrip.HeightRequest = gridLedstrip.WidthRequest;

但无论我在 HeighRequest 中填写什么,它都会一直被拉长!

有什么建议吗?

【问题讨论】:

    标签: c# xamarin xamarin.forms xamarin.android xamarin.ios


    【解决方案1】:

    为避免图像失真,请使用Aspect = "AspectFit"

     <Image Aspect="AspectFit" Source="arrow_back" VerticalOptions="CenterAndExpand" HeightRequest="30" Margin="10,0,0,0">
        <Image.GestureRecognizers>
            <TapGestureRecognizer Tapped="btnBack_Clicked" />
        </Image.GestureRecognizers>
    </Image>
    

    【讨论】:

    • 我说的是名为 imgLedstrip 的 IconView!
    【解决方案2】:

    试试

    HorizontalOptions="CenterAndExpand"
    

    如果图像的纵横比与网格不同,则不应扭曲图像。

    【讨论】:

    • 这个不行,IconView高度还是很大!
    • 如果不起作用,为什么将其标记为已接受?
    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2019-07-30
    相关资源
    最近更新 更多