VB.net 2010 视频教程 VB.net 2010 视频教程 VB.net 2010 视频教程
当前位置:
主页 > 编程开发 > .net教程 >
  • 深入浅出 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();
}
 



相关教程
  • 中国算是世界杯中最能长期保持着稳定成绩的一个了。 2018-12-19
  • 北欧的千湖之国被选为2018全球最幸福国家 2018-12-19
  • 设计众议院:神奇的MQB让全新一代宝来重生 2018-12-19
  • 坚持思想建党 推进理论强党 2018-12-18
  • 苏57空中姿态控制能力瞬间救场, F22隐身战机无法超越! 2018-12-18
  • 河北省对中央环保督察“回头看”问题整改进行部署 强化标本兼治 防止整改问题反弹 2018-12-18
  • 文天祥就义秘闻:时人写“生祭文”催其速死成就英名 2018-12-18
  • 在学习中进步。[奋斗] 2018-12-17
  • 香港海关加强查检堵截涉世界杯赛事侵权物品 2018-12-17
  • 中兴展台图赏:可折叠手机AXON M吸睛丨CES2018 2018-12-17
  • 逛博物馆 淳化大鼎的身世之谜:是何方显贵之物? 2018-12-16
  • 大陆首批台湾乘务员晋升乘务长 2018-12-16
  • 端午假期国内游客超8900万人次 全域旅游见成效 2018-12-15
  • 好,那我领教一下,回答我提出的问题 2018-12-15
  • 藏医保健常识:保肝护肝有讲究 2018-12-15
  • 631| 126| 142| 315| 628| 56| 309| 938| 851| 643|