VB.net 2010 视频教程 VB.net 2010 视频教程 VB.net 2010 视频教程
  • 深入浅出 WPF教程之WPF中,如何使用图像API进行绘

  • 2016-01-18 14:18 来源:未知

新疆25选7历史记录: WPF中,如何使用图像API进行绘制而不是XAML?

新疆25选7开奖号码 www.d1dx0.cn 首先,由于WPF中不象GDI+中有Graphics对象,因此你无法使用Graphics进行绘图了,取而代之的是:DrawingContext;类似地,GDI+中的OnPaint已被OnRender取代。
其次,UIElement有一个OnRendar方法,它的定义是:

protected virtual void OnRender (
DrawingContext drawingContext
)
 


但我们不能直接调用OnRender方法,也不能直接创建DrawingContext实例,但可以利用 DrawingGroup.Open 和DrawingVisual.RenderOpen。
这里举两个例子:
1)自定义绘制Canvas:

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows;
using System.Globalization;
namespace BrawDraw.Com.Test
{
class CanvasCustomPaint : Canvas
{
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
//画矩形
            dc.DrawRectangle(Brushes.Red, new Pen(Brushes.Blue, 1),
new Rect(new Point(20, 20), new Size(100, 100)));
//画文字
            dc.DrawText(new FormattedText("Hello, World!", CultureInfo.CurrentCulture,
FlowDirection.LeftToRight, new Typeface("Arial"), 40, Brushes.Orange),
new Point(50,60));
}
}
}
(
 



2)保存图片到文件:

        protected void SavePhoto(string fileName)
{
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
// 画矩形
            Rect rect = new Rect(new Point(160, 100), new Size(320, 80));
drawingContext.DrawRectangle(Brushes.LightBlue, (Pen)null, rect);
// 画文字
            drawingContext.DrawText(
new FormattedText("Hello, world",
CultureInfo.GetCultureInfo("en-us"),
FlowDirection.LeftToRight,
new Typeface("Verdana"),
36, Brushes.Black),
new Point(100, 60));
drawingContext.Close();
// 利用RenderTargetBitmap对象,以保存图片
            RenderTargetBitmap renderBitmap = new RenderTargetBitmap((int)this.Width, (int)this.Height, 96, 96, PixelFormats.Pbgra32);
renderBitmap.Render(drawingVisual);
// 利用JpegBitmapEncoder,对图像进行编码,以便进行保存
            JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
// 保存文件
            FileStream fileStream = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
encoder.Save(fileStream);
// 关闭文件流
            fileStream.Close();
}
 

 

相关教程
  • 2018 E3:女主持人展位探访 被吓的花容失色 2019-02-24
  • 5月末商品房库存继续减少 三、四线城市开启库存短缺时代 2019-02-24
  • 中国公民出入境排队将不超半小时 2019-02-24
  • 鹰潭高新区思想解放添发展动力 2019-02-23
  • 践行新发展理念 全面建成小康社会 2019-02-23
  • 端午节期间 全省道路安全畅通形势平稳 2019-02-23
  • 观众对三观不正影视剧不买账 76.7%受访者拒看 2019-02-23
  • 为峰会喝彩 为市民点赞 为青岛自豪 2019-02-22
  • 宜居中国厕所革命论坛举办 成立首个专业厕所革命研究所--旅游频道 2019-02-22
  • 6集电视文献纪录片《风范——老一辈革命家的故事》 2019-02-21
  • 端午节,跟随习近平找寻中华民族“精气神” 2019-02-21
  • 女排一主攻提前出局!进攻曾不输朱婷 今彻底沦为边缘人 2019-02-21
  • 开放的青岛期待“上合之声” 2019-02-20
  • 工商总局将针对“双11”等网络促销出管理规定 2019-02-20
  • 以法之名 捍卫英烈名誉 2019-02-20
  • 119| 309| 653| 831| 234| 723| 126| 863| 659| 311|