写在开始
不能用代码同时实现半透明和不规则形状的水印,只能选其一,有哪位高手指点一下不胜感激
此例中的半透明是在Fireworks中处理图片实现,不是用代码实现的
#include <wx/dcmemory.h>
#include <wx/dcclient.h>
#include <wx/dc.h>
enum Alignment
{
aLeftTop=0,
aLeftBottom=1,
aRightTop=2,
aRightBottom=3,
aCenter=4
};
void MarkImage(wxDC &dc,//设备上下文
wxString srcimg,//目标图片
wxString waterimg,//水印图片
wxString desimg,//已添加水印图片
int Percent=0,//透明度百分比
Alignment align=aLeftTop,//水印位置
int dx=0,int dy=0//边界距离
)
{
wxImage img1,img2;
img1.LoadFile(srcimg,wxBITMAP_TYPE_ANY);
img2.LoadFile(waterimg,wxBITMAP_TYPE_ANY);
// if(!img2.HasAlpha())
// {
// img2.InitAlpha();
// }
// unsigned char *alpha_plane = img2.GetAlpha();
// int alpha = (Percent*255)/100;
// memset(alpha_plane, alpha, img2.GetWidth() * img2.GetHeight());
// img2.SetMask();
// img2.SetMaskColour(0,0,255);
wxBitmap bmp1(img1);
wxBitmap bmp2(img2);
int w1=bmp1.GetWidth();
int h1=bmp1.GetHeight();
int w2=bmp2.GetWidth();
int h2=bmp2.GetHeight();
int x=dx,y=dy;
switch(align)
{
case aLeftBottom:
y=h1-h2-dy;
break;
case aRightTop:
x=w1-w2-dx;
break;
case aRightBottom:
x=w1-w2-dx;
y=h1-h2-dy;
break;
case aCenter:
x=(w1-w2)/2;
y=(h1-h2)/2;
default:
break;
}
wxMemoryDC memDC1,memDC2;
memDC1.SelectObject(bmp1);
// memDC.DrawBitmap(bmp2, x,y, true);
memDC2.SelectObject(bmp2);
memDC1.Blit(x,y,bmp2.GetWidth(),bmp2.GetHeight(),&memDC2,0,0,wxCOPY,true);
bmp1.SaveFile(desimg,wxBITMAP_TYPE_JPEG);
memDC1.Clear();
memDC1.SelectObject(wxNullBitmap);
memDC2.Clear();
memDC2.SelectObject(wxNullBitmap);
}
void WaterMarkDemoDialog::OnAbout(wxCommandEvent& event)
{
wxMemoryDC dc;
MarkImage(dc,_T("1.jpg"),_T("shape.png"),_T("3.jpg"),50,aCenter,100,200);
}
- 大小: 183.9 KB
分享到:
相关推荐
C# 给图片加上文字或图片水印,通过使用GDI+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。
在本示例中,我们将探讨如何在ASP.NET中给图片添加图片水印。 首先,创建一个名为`ImageWriter`的类库,该类库包含一个名为`ImageManager`的类,这个类将负责处理图片水印的添加。在这个类中,定义了一个枚举类型`...
在Java编程语言中,给图片添加水印是一项常见的任务,特别是在网站开发中,为了保护版权或者标识来源,经常需要在用户上传的图片上添加特定的文字或图像水印。以下将详细讲解如何使用Java来实现这一功能。 首先,...
我自己做的图片水印处理程序希望大家喜欢哦
在C#编程中,添加水印到图片...总之,C#结合WPF为图片添加水印提供了一种强大而灵活的方法,无论是图片还是文字水印,都可以轻松实现。通过创建DEMO并运行代码,你可以进一步熟悉这个过程,并将其应用到自己的项目中。
本项目“文字和图片水印添加 Winform 源码”提供了一种在Windows应用程序(Winform)中实现这一功能的方法。以下是关于这个项目及其相关知识点的详细说明: 1. **Winform应用**:Winform是.NET Framework的一部分,...
在Java编程环境中,给图片添加文字或图片水印是一项常见的图像处理任务,广泛应用于版权保护、品牌宣传等领域。本项目“基于Java给图片添加文字或图片水印”旨在教授如何利用Java实现这一功能,适用于大学生的课程...
在IT领域,尤其是在软件开发中,常常需要对图像进行各种处理,例如添加文字或图片水印,以增强版权保护或视觉效果。本篇将详细解析一个基于C#语言的WinForms应用程序,该程序实现了在图片上添加文字和图片水印的功能...
在C#编程中,添加和移除图片水印是一项常见的图像处理任务,主要涉及到图形绘制和位图操作。本文将详细讲解如何利用`System.Drawing.Graphics`类和`LockBits`方法来实现这一功能。 首先,`System.Drawing.Graphics`...
在本文中,我们将深入探讨如何使用WinForms来实现一个功能,即批量为图片添加文字或图片水印。这是一项实用的技术,特别是在版权保护、品牌宣传或者数据可视化等方面,我们常常需要在图片上添加独特的标识以表明...
同样是在“设计”菜单下,选择“水印”后,点击“图片水印”。在弹出的对话框中,浏览并选择你要用作水印的图片,可以是透明的PNG格式,这样可以更好地与文档背景融合。你可以调整图片的缩放比例和旋转角度,以达到...
以上代码展示了如何添加文字和图片水印的基本步骤。实际项目中,这些方法可能需要进一步优化,例如添加更多参数以适应不同需求,或者封装成一个可复用的类。 通过理解并运用上述知识点,你可以在C# Winform应用中...
在IT行业中,为图片添加水印是一项常见的任务,特别是在网页设计、社交媒体管理和版权保护等领域。在本项目中,我们将探讨如何使用JavaScript实现这一功能。这个项目适用于VS2010开发环境,它允许用户在上传图片之前...
在提供的程序实例中,已经封装了一个类,包含了添加文字和图片水印的功能。这个类可能会包含如下的方法: ```csharp public class Watermark { public void AddTextWatermark(Image image, string text, Font font...
网上很多文章要么都是在图片添加水印,要么给的例子都是全屏的水印,无法满足我先有的需求。 怎么办呢,自己怼一个好了。 思路:在页面里添加一个widget作为底层背景,在这个背景绘制水印。 绘制:通过CustomPaint、...
开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
C#代码给图片添加文字或图片水印
自动添加图片水印