VB.net 2010 视频教程 VB.net 2010 视频教程 VB.net 2010 视频教程
当前位置:
主页 > 编程开发 > .net教程 >
  • 深入浅出 WPF教程之WPF中,如何使用图像API进行绘

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

新疆25选7app: 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-12-12
  • 有神论跟无神论的差别在哪你都不知道,还要扯啥呢。 2018-12-12
  • 互联网与金融 回归·绿色·共享 2018-12-12
  • 中国保险监督管理委员会原主席项俊波受贿案一审开庭 2018-12-10
  • 紫光阁中共中央国家机关工作委员会 2018-12-10
  • 广州市食药监局:端午粽抽检全部合格 2018-12-10
  • 中国足球与中国股市谁最牛?请投下你神圣一票 2018-12-10
  • “碎尸案别墅”拍出后 拖欠的物业费谁付? 2018-12-09
  • 保温杯,嘴边的健康隐患 2018-12-09
  • 马来西亚总理马哈蒂尔 我要去中国看一看,感受无现金社会 2018-12-08
  • 这泼猴总给人萌萌达的感觉 2018-12-08
  • 我们的国际主义义务就是让那受苦受难的中东人去欧洲过上幸福,美好的生活。到中国来,又不自由,又不民主,茶叶蛋都吃不上,来干嘛泥? 2018-12-07
  • 一江清水何以来?(人民眼·生态补偿) 2018-12-07
  • 首轮成绩欠佳 球星状态低迷 2018-12-07
  • 女孩带八十岁养母读研:她陪我长大,我陪她到老 2018-12-06
  • 152| 517| 225| 231| 436| 875| 219| 303| 877| 207|