最近在搞一个图形图像的项目。不知道经理为什么选择了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. VB.NET 打开窗体后关闭自己

    第一:要实例化打开的窗体 Dim bb As New frm_Main 第二:打开窗体 show 第三:释放自身 Finalize()   '赋值另一窗体的控件值,先实例化,再进行操作 Dim bb ...

  2. 童话故事 --- 通信协议之 HDLC 浅析

    高飞狗: "高飞的白鹭浮水的鹅,唐诗里有画-" 布鲁托: "高飞狗,又在做你的高飞梦哪!" 高飞狗: "哈罗,布鲁托,这几天好郁闷呐!" 布 ...

  3. html加载时事件触发顺序

    一般情况下页面的响应加载顺序时,域名解析-加载html-加载js和css-加载图片等其他信息. jq ready()的方法就是Dom Ready,他的作用或者意义就是:在DOM加载完成后就可以可以对D ...

  4. asp.net中使用Global.asax文件中添加应用出错代码,写入系统日志文件或数据库

    void Application_Error(object sender, EventArgs e) { // 在出现未处理的错误时运行的代码 Exception objErr = Server.Ge ...

  5. SSM框架整合项目 :租房管理系统

    使用ssm框架整合,oracle数据库 框架: Spring SpringMVC MyBatis 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastj ...

  6. 【特效】单选按钮和复选框的美化(只用css)

    表单的默认样式都是比较朴素的,实际页面中往往需要美化他们.这里先说说单选按钮和复选框,有了css3,这个问题就变的好解决了.利用input与label相关联,对label进行美化并使其覆盖掉原本的in ...

  7. Iframe父子窗口之间的跨域事件调用和传值

    实现方案1:location.hash传值 父页面:parent.html(所在域:www.parent.com) 子页面:child.html(所在域:www.child.com) 要实现父子页面双 ...

  8. 墨卡托投影坐标系(Mercator Projection)原理及实现C代码

    墨卡托投影是一种"等角正切圆柱投影",荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面 ...

  9. HDFS 简介

    hadoop分别从3个角度将主机划分为2种角色 最基本的是Master 和 从HDFS角度,将主机划分为namenode和datanode,在分布式文件系统中,目录管理很重要,管理目录相当于主人 从m ...

  10. ASP动态网站建设之连接数据库相关操作

    连接数据库: string str = @"server=服务器名称;Integrated Security=SSPI;database=数据库名称;"; 注意封装公共类,将常用重 ...