首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SkiaSharp的Carouselview

使用SkiaSharp的Carouselview
EN

Stack Overflow用户
提问于 2020-11-08 03:05:02
回答 1查看 128关注 0票数 0

我正在尝试设置一个包含SkiaSharp的轮播视图的模板。我不能在skia:SKCanvasView上设置源,所以我创建了一个模板视图,但是现在当我将carousel视图绑定到ImageResults时什么也没有显示,但是我不知道如何将模板添加到列表中?

代码语言:javascript
复制
public List<Resultlist> ImageResults = new List<Resultlist>();
      public  class Resultlist
        {
            public string Desc { get; set; }
    
            public string Value { get; set; }
    
            public  SKBitmap foto { get; set; }
        }
代码语言:javascript
复制
<CarouselView Margin="0,0,0,0" HorizontalScrollBarVisibility="Never"  Style="{StaticResource ImageResultCarousel}" 
                ItemsSource="{Binding ImageResults, Mode=TwoWay}" 
                 BackgroundColor="{DynamicResource PictureBackground}"
                                   >
                            <CarouselView.ItemTemplate >
                                <DataTemplate>
                                    <resultlist:template></resultlist:template>
                                </DataTemplate>
                            </CarouselView.ItemTemplate>
</CarouselView>

模板

代码语言:javascript
复制
<yummy:PancakeView  CornerRadius="80">
            <skia:SKCanvasView  x:Name="canvasView" HeightRequest="400"  WidthRequest="200"
        PaintSurface="OnCanvasViewPaintSurface" />
     </yummy:PancakeView >

我的模板背面

代码语言:javascript
复制
SKBitmap bitmap =
    BitmapExtensions.LoadBitmapResource(typeof(template),
                                        "Resultlist.Screenshot.png");

    private void OnCanvasViewPaintSurface(object sender, SKPaintSurfaceEventArgs args)
    {
        SKImageInfo info = args.Info;
        SKSurface surface = args.Surface;
        SKCanvas canvas = surface.Canvas;

        canvas.Clear();

        SKRect dest = new SKRect(0, 0, info.Width, info.Height);

        BitmapStretch stretch = (BitmapStretch)BitmapStretch.AspectFill;
        BitmapAlignment horizontal = (BitmapAlignment)BitmapAlignment.Center;
        BitmapAlignment vertical = (BitmapAlignment)BitmapAlignment.Center;

        canvas.DrawBitmap(bitmap, dest, stretch, horizontal, vertical);
    }
EN

回答 1

Stack Overflow用户

发布于 2020-11-09 03:14:36

我们可以在DataTemplate中创建内联的“视图”。

代码语言:javascript
复制
<CarouselView Margin="0,0,0,0" HorizontalScrollBarVisibility="Never"  Style="{StaticResource ImageResultCarousel}" 
                ItemsSource="{Binding ImageResults, Mode=TwoWay}" 
                 BackgroundColor="{DynamicResource PictureBackground}"
                                   >
                            <CarouselView.ItemTemplate >
                                <DataTemplate>
                                    <yummy:PancakeView  CornerRadius="80">
            <skia:SKCanvasView  x:Name="canvasView" HeightRequest="400"  WidthRequest="200"
        PaintSurface="OnCanvasViewPaintSurface" />
     </yummy:PancakeView >
                                </DataTemplate>
                            </CarouselView.ItemTemplate>
</CarouselView>

在后台代码中

代码语言:javascript
复制
private void OnCanvasViewPaintSurface(object sender, SkiaSharp.Views.Forms.SKPaintSurfaceEventArgs e)
        {
            var canvasView = sender as SKCanvasView;
            var resultList = canvasView.BindingContext as Resultlist;
            //Now we can use resultList.foto to draw canvas.
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64731384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档