C# 调用SetROP2实现橡皮线效果

  C# 调用SetROP2实现橡皮线效果 
   
    郭胜涛 [email protected]

 DotNet Framework的GDI+较GDI添加了新的功能并对现有的功能进行了优化,
但是Graphics类中没有提供实现类似GDI中SetROP2函数来更改绘图模式的功能。
在计算机图形应用程序开发过程中经常用到反色模式来实现用户交互活动线,
我们可以在.Net 开发环境调用非托管的Win32 API 来实现上述的功能。

   先来看实例代码:

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Runtime.InteropServices;

namespace  Win32APIDraw
{
    
/// 
    
/// 封装交互线效果的类
    
/// 

    public class Win32XORPenDrawer : IDisposable
    
{
        
声明Win32 api

        
构造函数

        
私有成员

        
公共接口
    }

}

 代码分析:
  1 首先声明用到的Win32 API 函数.
  主要用到GetDC, ReleaseDC, SetROP2, LineTo, MoveToEx几个函数,如果需要扩充其他交互效果
 (如画弧)还要增加相应的API函数声明。
  我们使用SetROP2函数来设置画笔的反色效果。

  2 这个类的构造函数中传入图形设备的句柄和绘图模式,可以是窗体或打印机, 也可以是承载其他画图效果控件
的。当绘图模式参数传入值是6时,就是反色效果。因为在构造函数中我们调用了SetROP2函数。
  这和在VC++中的实现方法是一致的。
 
  3 声明相应的画线方法,调用Win32API画线。

  最后要注意的是,在c#环境下必须注意释放通过win32API中创建的非托管资源,因此,我们使这个类实现
IDisposable接口。
       

运行效果:

C# 调用SetROP2实现橡皮线效果_第1张图片

 

你可能感兴趣的:(GIS技术,.Net,开发)