最近在搞一个图形图像的项目。不知道经理为什么选择了C#语言,但还是要做,呵呵。

在期间出现一个比较难解决的问题如下:

删除当前图层的指定区域用来显示下面图层在这个区域的图像,相当于PS蒙版层的效果。

实现代码如下:

Bitmap tmp = new Bitmap(page.ImageFileName);
            Bitmap image = new Bitmap(tmp.Width, tmp.Height);
            Graphics g = Graphics.FromImage(image);
            g.Clear(Color.Transparent);
            g.DrawImage(tmp, 0, 0, tmp.Width, tmp.Height);
            tmp.Dispose();
            g = Graphics.FromImage(image);
            foreach (IVObject obj in page.Layers[1].VObjects)
            {
                Matrix m;
                GraphicsPath path = new GraphicsPath();
                switch (obj.GetType().Name)
                {
                    case "RectangleVObject":
                        path.ClearMarkers();
                        path.AddRectangle(obj.GetVObjectBounds());
                        m = obj.Transform;
                        m.Translate((m.OffsetX * 1.33F - m.OffsetX),
                            (m.OffsetY * 1.33F - m.OffsetY), MatrixOrder.Append);
                        m.Scale(1.33F, 1.33F);
                        path.Transform(m);
                        g.SetClip(path);
                        g.Clear(Color.Transparent);

Bitmap sourceImage = new Bitmap(imageFileName);

Bitmap image = new Bitmap(sourceImage .Width, sourceImage .Height);

Graphics g = Graphics.FromImage(image);

g.Clear(Color.Transparent);

g.DrawImage(sourceImage , 0, 0, sourceImage .Width, sourceImage.Height);

sourceImage .Dispose();

GraphicsPath path = new GraphicsPath();

Rectangle r = new Rectangle(x,y,w,h);

path.AddRectangle(r);

g.SetClip(path);

g.Clear(Color.Transparent);

C#删除区域实现透明的更多相关文章

  1. QMenu,contextmenuevent,窗体透明

    void MainWindow::contextMenuEvent(QContextMenuEvent *event) { QMenu *menu=newQMenu; menu->addActi ...

  2. java利用透明的图片轮廓抠图

    需要处理的图片: 1.png(空白区域为透明) 2.png 处理后的结果图片:result.png 代码如下: import java.awt.Graphics2D; import java.awt. ...

  3. VC/Wince 实现仿Win8 Metro风格界面3——按钮移动交换、删除、添加快捷方式(附效果图)

    上一篇文章写了如何进行页面滑动切换,今天我讲一下如何实现两个按钮拖动交换位置,包括同一个页面按钮交换或者两个页面之间的按钮交换.另外就是如何拖动删除界面上的快捷方式.按钮交换和拖动删除,这两个功能基本 ...

  4. QT下的几种透明效果(三种方法:调色板,透明度属性,自绘)

    1.窗口整体透明,但是窗体上的控件不透明.    通过设置窗体的背景色来实现,将背景色设置为全透.  QPalette pal = palette();  pal.setColor(QPalette: ...

  5. Entity Framework Core 软删除与查询过滤器

    本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意 ...

  6. 【转载】Layered Window(分层窗体,透明窗体)

    本文转载自花间醉卧<Layered Window(分层窗体,透明窗体)> //为窗体添加WS_EX_LAYERED属性,该属性使窗体支持透明 ModifyStyleEx(0, WS_EX_ ...

  7. 提高OCR质量的技巧之区域未正确检测

    ABBYY FineReader会在识别前分析页面图像并检测图片上不同类型的区域,如文本.图片.背景图片.表格和条形码区域,此分析确定识别的区域和识别顺序.在用户界面中,不同的区域类型按其边界的颜色进 ...

  8. 【EF】Entity Framework Core 软删除与查询过滤器

    本文翻译自<Entity Framework Core: Soft Delete using Query Filters>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 注意 ...

  9. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

随机推荐

  1. 简单Elixir游戏服务器-安装Elixir

    用WebInstaller 安装半天也没下载成功文件. 改成直接下载erlang 和 elixir 预编译包了. 安装很简单,最后设置好环境变量. cmd 执行 elixir -v 最后顺便下载了个g ...

  2. Linux jdk安装多个版本并进行切换

    1. 上传jdk7 和 jdk8 包 2. 解压 [root@localhost webapps]# tar -zxvf /package/jdk-7u80-linux-x64.tar.gz 3. 配 ...

  3. Python自学笔记-递归函数(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看.   递归函数 ...

  4. JavaScript链式调用

    1.什么是链式调用? 这个很容易理解,例如 $('text').setStyle('color', 'red').show(); 一般的函数调用和链式调用的区别:链式调用完方法后,return thi ...

  5. 将 Intent 序列化,像 Uri 一样传递 Intent!!!

    一.真的需要new一个Intent吗? 在 Android 中,打开一个 Activity ,有多少种方式?不过不管是使用什么方式,最终都没办法逃避创建一个 Intent ,然后startActivi ...

  6. 我修改的时钟flash

    <object type="application/x-shockwave-flash" style="outline:none;" data=" ...

  7. 在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML

    在SQL Server中实现关系模型的阶梯到级别3的t -SQL DML 格雷戈里·拉森(Gregory Larsen),2017/08/02(第一次出版:2011 /11/09) 原文链接:http ...

  8. Spring装配Bean之Java代码装配bean

    尽管通过组件扫描和自动装配实现Spring的自动化配置很方便也推荐,但是有时候自动配置的方式实现不了,就需要明确显示的配置Spring.比如说,想要将第三方库中的组件装配到自己的应用中,这样的情况下, ...

  9. PE格式第九讲,资源表解析

    PE格式第九讲,资源表解析 一丶熟悉Windows管理文件的方法 首先,为什么标题是这个,主要是为了下边讲解资源方便,因为资源结构体很乱.如果直接拿出来讲解,那么就会很晕. 1.windows管理文件 ...

  10. LINUX 笔记-crontab命令

    用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute   hour   da ...