private void addImage()
{
Bitmap bmp = new Bitmap("test.bmp");
this.pictureBox1.Image = bmp;
}
/// <summary>
/// 添加文字水印
/// </summary>
private void addText()
{
Graphics g = this.pictureBox1.CreateGraphics();
Font f = new Font("Verdana ", 55);
Brush b = new SolidBrush(Color.Yellow);
g.DrawString("您好", f, b, 10, 10);
g.Dispose();
}
//如果我将上面两个方法分别在两个按钮的点击事件中调用
private void btn1_Click(object sender, EventArgs e)
{
//在一个方法中连着调用addImage和addText,看不到addText的效果;
//如果在另外一个按钮的方法中调用addText,就有效果
addImage();
}
private void btn2_Click(object sender, EventArgs e)
{
//在一个方法中连着调用addImage和addText,看不到addText的效果;
//如果在另外一个按钮的方法中调用addText,就有效果
addText();
}
//***************点击btn1后再点击btn2,有文字水印效果***************//***************直接点击btn3,没有文字水印效果,
//快速点击btn3后发现有文字水印效果,但是出现后马上又消失了***************
private void btn3_Click(object sender, EventArgs e)
{
addImage();
addText();
}
//***************直接点击btn3,没有文字水印效果,
//快速点击btn3后发现有文字水印效果,但是出现后马上又消失了***************
这是为什么呢? 谁能帮帮忙,我就想给一个控件加载图片后,再添加水印效果上去,但是水印效果不能是加到图片上,因为我后面还需要用到图片
string coverPath1 = context.Server.MapPath("BookCovers") + "/7111174739.jpg";
Image cover1 = Image.FromFile(coverPath1);
//拿到水印图片
string waterPath1 = context.Server.MapPath("images") + "/WaterMark" + ".jpg";
Image water1 = Image.FromFile(waterPath1);
Graphics g1 = Graphics.FromImage(cover1);
g1.DrawImage(water1, cover1.Width - water1.Width, cover1.Height - water1.Height, water1.Width, water1.Height);//在cover图片上面画水印(当然你不需要,这句代码就不用)
cover1.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//将图片保存在输出流
water1.Dispose(); //释放资源
cover1.Dispose();
g1.Dispose();
看看行不行。可能是因为图片把文字覆盖了。
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
Font f = new Font("Verdana ", 55);
Brush b = new SolidBrush(Color.Yellow);
e.Graphics.DrawString("おはよう", f, b, 10, 10);
}
不然picturebox重绘的时候,你临时添加的内容肯定没了。