WPF Canvas ItemsControl ItemsContainerStyle Canvas.Left Canvas.Top ItemTemplace RenderTargetBitmap VisualDrawing DrawContext DrawRectangle JpegBitmapEncoder

<Canvas>
    <ItemsControl ItemsSource="{Binding ElpsCollection,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="Canvas.Left" Value="{Binding X}"/>
                <Setter Property="Canvas.Top" Value="{Binding Y}"/>
            </Style>
        </ItemsControl.ItemContainerStyle>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Ellipse Width="{Binding Width}"
                         Height="{Binding Height}"
                         Fill="{Binding ElpColor}">
                </Ellipse>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</Canvas>


private void ConvertFrameworkElementAsJpg(FrameworkElement fe)
{
     var rtb=new RenderTargetBitmap((int)win.ActualWidth*dpiFactor,
         (int)win.ActualHeight*dpiFactor,
         96*dpiFactor,96*dpiFactor,PixelFormats.Pbgra32);

    DrawingVisual drawingVisual = new DrawingVisual();
    using (DrawingContext drawingContext = drawingVisual.RenderOpen())
    {
        VisualBrush visualBrush = new VisualBrush(fe);
        drawingContext.DrawRectangle(visualBrush, null,
            new Rect(0, 0, win.ActualWidth, win.ActualHeight));
    }

    rtb.Render(drawingVisual);

    JpegBitmapEncoder jpgEncoder=new JpegBitmapEncoder();
    jpgEncoder.Frames.Add(BitmapFrame.Create(rtb));

    string jpgFile = $"Canvas_{DateTime.Now.ToString("yyyyMMddHHmmssffff")}.jpg";
    using(FileStream fileStream=new FileStream(jpgFile,FileMode.Create))
    {
        jpgEncoder.Save(fileStream);
    }

    OpenJpgFile(jpgFile);
}

  

 

 

image

 

 

image

 

 

 

image

 

posted @ 2025-08-18 14:21  FredGrit  阅读(4)  评论(0)    收藏  举报