Graphics.SetClip 用法介绍

1.Graphics 对象作为GDI+ 图形绘制接口,其对绘制区域剪辑,经过 SetClip() 方法实现。 测试

比较经常使用 方法如: SetClip(Rectangle, CombineMode)spa

Rectangle :选择区域范围3d

CombineMode: Rectangle 所表明区域与Graphics 已选择范围之间做用关系,如 交集,并集,或者替换等,详细介绍:code

public enum CombineMode { //
        // 摘要: // 另外一种将替换为一个剪辑区域。
        Replace = 0, //
        // 摘要: // 经过采用它们的交集组合两个剪辑区域。
        Intersect = 1, //
        // 摘要: // 经过采用这二者的 union 组合两个剪辑区域。
        Union = 2, //
        // 摘要: // 两个剪辑区域是组合采起相应的区域括起,一项或在其余区域中,但不是能同时。
        Xor = 3, //
        // 摘要: // 指定正在从现有的区域中删除的新区域的结果替换为现有区域。 换言之,从现有区域中排除的新区域。
        Exclude = 4, //
        // 摘要: // 指定正在重新的区域中删除现有区域的结果替换为现有区域。 换言之,重新区域中排除现有的区域。
        Complement = 5 }

 

2.测试CombineMode 不一样类型 效果:对象

private void SetClipRectangleFCombine(PaintEventArgs e) { Graphics newGraphics = e.Graphics; if (state == 1) { //左上角矩形
                newGraphics.SetClip(new Rectangle(0, 0, 100, 100)); } else if (state == 2) { //右下角矩形
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100)); } else if (state == 3) { //经过采用这二者的 union 组合两个剪辑区域
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100), CombineMode.Replace); newGraphics.SetClip(new Rectangle(0, 80, 100, 100), CombineMode.Union); } else if (state == 4) { //两个剪辑区域是组合采起相应的区域括起,一项或在其余区域中,但不是能同时
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100), CombineMode.Replace); newGraphics.SetClip(new Rectangle(0, 80, 100, 100), CombineMode.Xor); } else if (state == 5) { //经过采用它们的交集组合两个剪辑区域
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100), CombineMode.Replace); newGraphics.SetClip(new Rectangle(0, 80, 100, 100), CombineMode.Intersect); } else if (state == 6) { //指定正在重新的区域中删除现有区域的结果替换为现有区域。 换言之,重新区域中排除现有的区域
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100), CombineMode.Replace); newGraphics.SetClip(new Rectangle(0, 80, 100, 100), CombineMode.Complement); } else if (state == 7) { //指定正在从现有的区域中删除的新区域的结果替换为现有区域。 换言之,从现有区域中排除的新区域
                newGraphics.SetClip(new Rectangle(50, 50, 100, 100), CombineMode.Replace); newGraphics.SetClip(new Rectangle(0, 80, 100, 100), CombineMode.Exclude); } e.Graphics.FillRectangle(new SolidBrush(Color.Black), 0, 0, 500, 500);

             //恢复Clip 为无限区域,从新绘制
             //e.Graphics.ResetClip();
             //e.Graphics.FillRectangle(new SolidBrush(Color.Black), 75, 75 , 200, 200);blog

 }

 

3.运行结果:接口

state:1ip

 

 

state 2:io

 

 

state 3:class

 

 

state 4:

 

 

state 5:

 

 

state 6:

 

 

 state 7:

相关文章
相关标签/搜索