wpf随记(经验证ok 12-26)

wpf中Bitmap与BitmapImage是什么?

image控件显示图片:

public MainWindow()
{
    InitializeComponent();
    this.Background = Brushes.White;
    System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap("test.png");
    BitmapImage bitmapImage = BitmapToBitmapImage(bitmap);
    mainWindow.Source = bitmapImage;
}

private BitmapImage BitmapToBitmapImage(System.Drawing.Bitmap bitmap)
 {
    BitmapImage bitmapImage = new BitmapImage();
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        bitmap.Save(ms, ImageFormat.Png);
        bitmapImage.BeginInit();
        bitmapImage.StreamSource = ms;
        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.EndInit();
        bitmapImage.Freeze();
    }
    return bitmapImage;
}

在bitmapImage上作画:

DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();

drawingContext.DrawText(new FormattedText("欢迎访问我博客 http://lindexi.gitee.io 里面有大量 UWP WPF 博客",
CultureInfo.GetCultureInfo("zh-cn"),
FlowDirection.LeftToRight,
new Typeface("Verdana"),
    36, Brushes.Black),
new System.Windows.Point(200, 116));
drawingContext.DrawImage(new BitmapImage(new             Uri("C:\\Users\\Administrator\\source\\repos\\tool\\tool\\bin\\Debug\\net6.0-windows\\test.png")),new Rect(0,0,1000,1000));
drawingContext.Close();

RenderTargetBitmap bmp = new RenderTargetBitmap(1280, 1000, 96, 96, PixelFormats.Pbgra32);
bmp.Render(drawingVisual);

var bitmapImage = new BitmapImage();
var bitmapEncoder = new PngBitmapEncoder();
bitmapEncoder.Frames.Add(BitmapFrame.Create(bmp));

using (var stream = new MemoryStream())
 {
    bitmapEncoder.Save(stream);
    stream.Seek(0, SeekOrigin.Begin);

    bitmapImage.BeginInit();
    bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
    bitmapImage.StreamSource = stream;
    bitmapImage.EndInit();
}

BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));

using (var fileStream = new System.IO.FileStream("66.png", System.IO.FileMode.Create))
{
    encoder.Save(fileStream);
}
mainWindow.Source = bitmapImage;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值