Vb.Net实现图片合并(相框效果)

Vb.Net实现图片合并(相框效果)

Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Drawing.Drawing2D

Public Class ImgMerg
    Public Shared Function MergedImage(ByVal innerImgPath As String, ByVal outerImgPath As String, ByVal mergImgPath As String) As Boolean
        Try
            Dim fi As System.IO.FileInfo = New System.IO.FileInfo(mergImgPath)
            If fi.Directory.Exists = False Then
                fi.Directory.Create()
            End If

            Dim innerImg As Image = Image.FromFile(innerImgPath)
            Dim outerImg As Image = Image.FromFile(outerImgPath)

            Dim b As New Bitmap(outerImg.Width, outerImg.Height, PixelFormat.Format16bppRgb555)
            Dim g As Graphics = Graphics.FromImage(b)
            g.Clear(Color.White)

            Dim p1(2) As Point
            Dim p2(2) As Point
            If outerImg.Width >= innerImg.Width Then
                If outerImg.Height >= innerImg.Height Then
                    p1(0) = New Point((outerImg.Width - innerImg.Width) \ 2, (outerImg.Height - innerImg.Height) \ 2)
                    p1(1) = New Point((outerImg.Width + innerImg.Width) \ 2, (outerImg.Height - innerImg.Height) \ 2)
                    p1(2) = New Point((outerImg.Width - innerImg.Width) \ 2, (outerImg.Height + innerImg.Height) \ 2)
                Else
                    p1(0) = New Point((outerImg.Width - innerImg.Width) \ 2, 0)
                    p1(1) = New Point((outerImg.Width + innerImg.Width) \ 2, 0)
                    p1(2) = New Point((outerImg.Width - innerImg.Width) \ 2, outerImg.Height)
                End If
            Else
                If outerImg.Height >= innerImg.Height Then
                    p1(0) = New Point(0, (outerImg.Height - innerImg.Height) \ 2)
                    p1(1) = New Point(outerImg.Width, (outerImg.Height - innerImg.Height) \ 2)
                    p1(2) = New Point(0, (outerImg.Height + innerImg.Height) \ 2)
                Else
                    p1(0) = New Point(0, 0)
                    p1(1) = New Point(outerImg.Width, 0)
                    p1(2) = New Point(0, outerImg.Height)
                End If
            End If

            p2(0) = New Point(0, 0)
            p2(1) = New Point(outerImg.Width, 0)
            p2(2) = New Point(0, outerImg.Height)

            g.DrawImage(innerImg, p1)
            g.DrawImage(outerImg, p2)

            b.Save(mergImgPath)
            outerImg.Dispose()
            innerImg.Dispose()
            Return True

        Catch ex As Exception
            Return False
        End Try

        '测试代码
        'Dim innerImgPath As String = "c:\Winter.jpg"
        'Dim outerImgPath As String = "c:\17.gif"
        'Dim savePath As String = "C:\merg.jpg"

        'If ImgMerg.MergedImage(innerImgPath, outerImgPath, savePath) = True Then
        '    Dim bMerg As New System.drawing.Bitmap(savePath)
        'Else
        '    MsgBox("错误")
        'End If
    End Function

End Class

posted on 2006-06-08 17:40 郭大侠 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/guodaxia/archive/2006/06/08/420867.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】Azure云存储及存储账户概述***

本文介绍下Azure云存储及存储账户。 1、什么是微软Azure云存储 微软Azure云存储是微软提供的云端数据存储服务,是一种可伸缩、持久化的数据存储服务,可以在Internet上被访问并按实际存储容量收费。它也可以被REST API访问,可以保存Azure云端…

插入法排序c语言程序,插入排序算法及C语言实现

插入排序算法是所有排序方法中最简单的一种算法,其主要的实现思想是将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。直接插入排序是插入排序算法中的一种,采用的方法是:在添加新的记录时&a…

5分钟能回答的人,年薪25万美金以上

据说,在美国,5分钟能回答这道题的人,平均年薪25万美金以上,题目如下:5个海盗抢到了100颗宝石,每一颗都一样的大小和价值连城。他们决定这么分: 1. 抽签决定自己的号码(1&…

【转】Microsoft Azure存储服务:存储账户****

在正式使用 Microsoft Azure 存储服务之前,你至少需要有一个 Azure 订阅并创建「存储账户」。Azure 订阅账户可以访问和使用各种 Azure 服务,在有了 Azure 订阅之后便可以开始创建「存储账户」并开始使用前面存储类型与访问中曾介绍过的 blobs、表&#…

大学c语言常用语句意思,C语言常用语句

.printf函数调用的一般printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为:printf(“格式控制字符串”, 输出表列)其中格式控制字…

2004-4-3+ asp.net编程环境的配置

想要在本地机上编写并运行测试asp.net程序,必须要配置环境先(……),下面就来研究一下这个问题。首先当然得有iis,这个似乎不用多说,添加/删除程序-安装windows组件-iis-插入2000或xp光盘-完成(当…

vs c语言 多线程demo,一个多线程的Socket通信Demo(C语言实现)

-----------这是客户端程序--------------#include "stdio.h"#include "winsock2.h"#include "stdlib.h"#pragma comment(lib,"ws2_32")void main(){WSADATA wsaData;WSAStartup(MAKEWORD(2,2),&wsaData);SOCKET s socket(PF_INE…

【转】Azure Logic App Demo

使用Azure Logic App Azure Function 完成简单的业务流程 什么是Logic App Azure 逻辑应用提供了,用于在云中简化并实现可缩放的集成和工作流的方式。 它提供了可视化设计器,用于为流程建模并将流程作为一系列步骤(称为工作流)…

住宅的结构有哪些形式

住宅的结构有哪些形式住宅的结构是指住宅的承重骨架(如房屋的梁柱、承重墙等),其作用是保证住宅在使用期限内,把作用在住宅上的各种荷载或作用力,可靠地承担起来,同时在保证住宅的强度、刚度和耐久性的情况下,把所有的…

c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...

#include #include /* fabs */#ifdef _WIN32// #include #endif//输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么?void test_float001(){double i;for(i0; i ! 10; i 0.1){printf("%.1f\n", i);#ifdef _W…

【转】Azure应用部署方式对比

如图 azure环境应用托管方式对比 1. app service serverless azure的app service支持几乎所有语言开发的web app,既可以手动使用publish profile部署,也可以使用vsts创建一个(CDCI)持续集成。都非常方便。 而azure的function app…

.Net下几种日志管理方法

.Net下几种日志管理方法 日志是应用程序中不可缺少的一部份,不仅可以记录应用程序的运行状态,还可以记录一些BUG,便于应用程序的更新与修改。在.Net有好几种方法可以对日志进行管理。1、数据库日志。2、文本日志。3、系统事件日志。 首先&…

c语言哪个方法称为程序大门,学会这8个经典小程序,就相当于跨入了C语言大门...

描述【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码&#x…

【转】无服务计算(Serverless Computing)核心知识

Serverless Computing概念 云原生计算基金会CNCF(Cloud Native Computing Foundation, CNCF)Serverless Whitepaper v1.0对无服务器计算作了如下定义: Serverless computing refers to the concept of building and running applications tha…

其他技术(Path)

其他技术-AV技术转载于:https://www.cnblogs.com/f4f16/archive/2006/08/27/487676.html

c语言中指数优化,西藏东财中证医药卫生指数C净值下跌1.96% 请保持关注

来源:金融界基金作者:机器君金融界基金08月07日讯 西藏东财中证医药卫生指数型发起式证券投资基金(简称:西藏东财中证医药卫生指数C,代码008552)公布最新净值,下跌1.96%。本基金单位净值为1.397元,累计净值…

PE文件结构详解(一)基本概念

(一)基本概念 PE(Portable Execute)文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,P…

把Excel文件中的数据读入到DataGrid中

使用Excel文件做为DataGrid的数据源是非常简单的,一旦数据被装载进来,就可以把数据再保存进SQL Server或XML中。我们只需要简单地使用OLE DB Provider 来访问Excel文件,然后返回DataSet即可。下面是要显示的Excel数据contact.xls:…

一行c语言代码,打钩的一行c语言代码解释一下,谢谢,详细解释绝对最佳

string strg Application.StartupPath.ToString();//F:\调试06\MrCy\MrCy\Data\mrcy.bak//获取当前启动位置strg strg.Substring(0, strg.LastIndexOf("\\")); //取得当前启动位置的上一级目录strg strg.Substring(0, strg.LastIndexOf("\\")); //取得当…

【转】.NET平台开发Mongo基础知识

NoSQL简介 NoSQL相关的技术最近越来越受欢迎,Mongo本身就是基于NoSQL实现的。关于NoSQL你需要了解 什么是NoSQLNoSQL和传统的关系型数据库有什么区别NoSQL的优缺点 这几个问题下面的文章有所介绍: http://www.runoob.com/mongodb/nosql.html http://…