应用WPF图像API正确方法讲解

网友投稿 271 2023-05-17

如何使用WPF图像API来进行绘制,在实际使用中是经常要用到的一个技巧。作为一个初学者来说,掌握这一技巧的应用对以后的学习有非常重要的作用。#t#

首先,由于WPF中不象GDI+中有Graphics对象,因此你无法使用Graphics进行绘图了,取而代之的是:DrawingContext;类似地,GDI+中的OnPaint已被OnRender取代。

其次,UIElement有一个OnRendar方法,它的定义是:

protected virtual 

void OnRender (  

DrawingContext 

drawingContext  

但我们不能直接调用OnRender方法,也不能直接创建DrawingContext实例,但可以利用 DrawingGroup.Open 和DrawingVisual.RenderOpen。

这里举两个WPF图像API的使用例子:

(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));   }   }   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.

(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();   }   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.

以上就是WPF图像API进行绘制的相关方法介绍。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:告别地域限制,手机号码怎么改归属地?
下一篇:不知道今天吃什么?今天吃什么 API 告诉你
相关文章

 发表评论

暂时没有评论,来抢沙发吧~