写在开始
不能用代码同时实现半透明和不规则形状的水印,只能选其一,有哪位高手指点一下不胜感激
此例中的半透明是在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+ 给图片上加水印。实现了透明文字与透明图片水印。可设置水印位置。
java给图片添加水印,网站开发过程中可能需要对上传的图片添加属于本网站的水印,这是一个工具类,能实现添加文字水印和添加图片水印。
我自己做的图片水印处理程序希望大家喜欢哦
【ASP.NET编程知识】asp .net实现给图片添加图片水印方法示例.docx
基于Java给图片添加文字或图片水印 大学生课程设计 基于Java的课程设计 自己大二写的课程设计
文字水印,图片水印,水印位置 一切都有 下载绝对值
使用Graphics和LockBits锁内存方式进行图片水印的添加和去掉操作
winfrom给图片批量添加文字或图片水印。
JAVA实现给图片增加图片水印或者文字水印相关依赖包。
winform实现图片上添加文字、图片水印源码,支持水印预览、位置、文字字体、透明度等设置
C#Winform实现简单文字图片水印效果
开发一个项目,需要用到图片加水印的功能,这里考虑使用后台加水印,在上传的时候或者回显到页面时候,取图片文件的流数据,进行加水印在返回流数据就行了,非常简单,不懂可以问我
C#代码给图片添加文字或图片水印
JSP过滤器方式实现无损坏给图片添加水印
网上很多文章要么都是在图片添加水印,要么给的例子都是全屏的水印,无法满足我先有的需求。 怎么办呢,自己怼一个好了。 思路:在页面里添加一个widget作为底层背景,在这个背景绘制水印。 绘制:通过CustomPaint、...
自动添加图片水印
运行环境:vs2010 利用js实现图片上传预览 实现对图片添加图片水印和文字水印
1、在网上查看了很多 资料,一般合成图片的方法,有两种;这种要简单、灵活些; 2、做成一哥demo,供学习参考;