繁体   English   中英

如何旋转动态加载到列表视图中的图像

[英]How to rotate images that are being dynamically loaded into a list view

我有一个列表视图:

            <ListView Grid.Row="1" x:Name="invList" ItemSelected="invListSelected" RowHeight="50" VerticalOptions="FillAndExpand">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="64"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="64"/>
                            </Grid.ColumnDefinitions>
                            <Image Grid.Row="0" Grid.Column="0"  Margin="5,5,5,5" HorizontalOptions="Center" Source="{Binding SourceImage}" VerticalOptions="Center" Aspect="AspectFit"/>
                            <Label Grid.Row="0" Grid.Column="1" Margin="0,0,0,3" Text="{Binding Content}" VerticalOptions="Center" VerticalTextAlignment="Center" FontSize="Medium" LineBreakMode="TailTruncation"/>
                        </Grid>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

正在使用以下C#代码填充此列表视图:

 InvStrucSync structureSync = new InvStrucSync();
 structureData = await structureSync.GetStructures(viewModel.CompanyData.company_id);
 foreach (Structure structure in structureData)
 {
    if (structure.archived == "True")
       continue;

    var lt = new ListTemplate(structure.id, structure.name, ImageSource.FromFile("default_image.png"));

    if (!string.IsNullOrEmpty(structure.photos))
       if (structure.photos.Length % 4 == 0)
       {
          lt.SourceImage = ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(structure.photos)));

          var directories = ImageMetadataReader.ReadMetadata(new MemoryStream(Convert.FromBase64String(structure.photos)));
         if (Device.Android == "Android")
         {
            foreach (var directory in directories)
               foreach (var tag in directory.Tags)
                  if (tag.Name == "Orientation")
                  {
                     if (tag.Description == "Top, left side(Horizontal / normal)")
                     {

                     }
                     else if (tag.Description == "Left side, bottom (Rotate 270 CW)")
                     {

                     }
                     else if (tag.Description == "Right side, top (Rotate 90 CW")
                     {
                        //Rotate image
                     }
                  }

               }
            }

            listDisplay.Add(lt);
         }

基本上,以上代码循环遍历从数据库中提取的数据,然后创建一个ListTemplate,然后将其添加到列表显示中并显示给用户。 我想在列表视图中旋转刚创建的特定项目的图像。 但是,我不确定如何引用新创建的图像。 他们是我可以创建图像并将图像旋转一定程度的一种方法吗?

谢谢。

看看FFImageLoading插件 您应该可以通过在RotateTransformationBindingDegree属性来执行RotateTransformation -您可能希望/需要使用转换器。 查看RotateTransformation FFImageLoading示例以获取想法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM