`
dqifa
  • 浏览: 112208 次
社区版块
存档分类
最新评论

给图片添加图片水印

阅读更多
写在开始
不能用代码同时实现半透明和不规则形状的水印,只能选其一,有哪位高手指点一下不胜感激

 

此例中的半透明是在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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics