VB.net 2010 视频教程 VB.net 2010 视频教程 VB.net 2010 视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
  • 深入浅出 WPF教程之WPF中,如何使用图像API进行绘

  • 2016-01-18 12:13 来源:未知

大乐透开奖: WPF中,如何使用图像API进行绘制而不是XAML?

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



相关教程
  • 灯光焰火艺术表演在青岛举行 2019-04-25
  • 刘鹏:抓住“特色”的同时也要看淡“特色” 2019-04-25
  • 图解:中国经济已现一大积极信号,你知道了吗? 2019-04-25
  • 坚守岗位守护绿城美丽与整洁 2019-04-24
  • 个税法迎第七次大修 起征点调至每年6万元 2019-04-24
  • 传Switch即将支持媒体应用 看电影听音乐不是梦传Switch即将支持媒体应用-行情资讯 2019-04-24
  • [大笑]山不在高,有仙则名,水不在深,有龙则灵,文不在多,逻辑通透则行! 2019-04-24
  • 高一年级组“经典永流传”诵读比赛精彩回顾—wydzx.blog的博客—强国博客—人民网 2019-04-23
  • 红薯-热门标签-华商生活 2019-04-23
  • 这是全国精气最为集中的地方 被称为中国丹田所在 ——凤凰网房产 2019-04-23
  • 2018高考今日鸣锣 分享作家们的高考故事:莫言曾说它"很坏" 2019-04-22
  • 南方都市报:中考结束遇上父亲节,考场外这一幕瞬间萌翻你,心都化了! 2019-04-22
  • 马克思主义通过指导无产阶级革命建立起部分社会财富公有制而改变了人类历史发展进程,离开部分社会财富公有制的建立来谈“改变人类历史发展进程”纯粹是无稽之谈。 2019-04-22
  • 北京高能时代环境技术股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-04-21
  • 6000元的借款,仅仅过了半年,就利滚利,垒高到超过百万元,需要借款人卖房抵债——万恶的驴打滚真是望尘莫及了[YY] 2019-04-21
  • 894| 254| 625| 103| 569| 734| 722| 511| 257| 546|