更新时间:2015-10-03 01:17:55浏览次数:1+次
最后就是四个静态文本空间,分别写上如图标题
最后就是图片控件哦!
我们需要修改类型为“位图”,同时我们为它关联一个成员变量m_ImageDemo。
我们在ImageTextDlg的头文件中添加上《水印1》中的开头部分的代码,也就是需要我们链接的库以及需要包含的头文件等。但首先你得有一个GDI+头文件包哦!我们把它放到ImageText文件夹中。
我们先看看添加成员变量的页面:
注意哦!成员变量的种类哦!有三个是控件类型的,两个坐标就是值类型的
接着就是处理的我们的两个类向导了。
第一个:
void CImageTextDlg::OnBrowse()
{
CFileDialog flDlg(TRUE, "", "", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"图像文件|*.bmp;*.jpg;*.jpeg;*.gif||"); //定义文件打开对话框
if (flDlg.DoModal() == IDOK)
{
CString szText = flDlg.GetPathName();
m_FileName.SetWindowText(szText);
if (m_pBmp != NULL)
{
delete m_pBmp;
m_pBmp = NULL;
}
m_pBmp = Bitmap::FromFile(szText.AllocSysString());//根据文件名称生成GDI+位图对象
Color bkClr(0, 0, 0);
HBITMAP hBmp;
m_pBmp->GetHBITMAP(bkClr, &hBmp);
m_ImageDemo.SetBitmap(hBmp);
szText.ReleaseBuffer();
}
}
这个类向导的形式我们不陌生吧。《学习心得之八------实现从磁盘读入图片文件》里也有介绍哦,而且关于成员变量的创建也有介绍哦!不懂的话你可以看看。我就不解释了。//水印处理
void CImageTextDlg::OnImageText()
{
UpdateData();//更新窗口获取数据
CString szText;
m_WaterText.GetWindowText(szText);//1
if (!szText.IsEmpty() && m_pBmp != NULL)
{
Graphics *pGraph = Graphics::FromImage(m_pBmp);//生成Graphics对象//2
Brush *brush = new SolidBrush (Color(255,255,0,0));//定义GDI+画刷对象//3
Font *font = new Font(L"Arial", 12);//定义GDI+字体对象 //4
PointF ptf;//5
ptf.X = m_OriginX;
ptf.Y = m_OriginY;
//确定字符长度
int nLen = MultiByteToWideChar(CP_ACP, 0, szText, -1, NULL, 0);//6
//在位图中输出字符串
pGraph->DrawString(szText.AllocSysString(), nLen, font, ptf, brush);//7
szText.ReleaseBuffer();
Color clr;
HBITMAP hBmp, hOldBmp;
m_pBmp->GetHBITMAP(clr, &hBmp);
hOldBmp = m_ImageDemo.SetBitmap(hBmp);//8
if (hOldBmp)
{
DeleteObject(hOldBmp);
}
}
}
这就是我们处理水印的关键代码!我们按着顺序解释:VOID Example_DrawString2(HDC hdc)
{
Graphics graphics(hdc);
// Create a string.
WCHAR string[] = L"Sample Text";
// Initialize arguments.
Font myFont(L"Arial", 16);
PointF origin(0.0f, 0.0f);
SolidBrush blackBrush(Color(255, 0, 0, 0));
// Draw string.
graphics.DrawString(
string,
11,
&myFont,
origin,
&blackBrush);
}
8,就是将我们的水印图片添加到图片控件上!
但是,还是有bug哦!下篇我们再详述!先看看最后应该有的实现结果吧!
刚刚我同学和我说:“苦逼的程序员,现在还在敲代码!”,我还不是程序员呢!不过在努力!谁说程序员就是苦的,累的!!!来看福利(暂时先发出实现的结果效果!)
相关资讯