您的位置:程序门 -> .net技术 -> c#



drawstring后怎么清除?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


drawstring后怎么清除?[已结贴,结贴人:jiangqiaohua]
发表于:2007-01-11 17:16:10 楼主
我想实时看水印效果
                private   void   textbox1_textchanged(object   sender,   eventargs   e)
                {
                        graphics   dc   =   graphics.fromimage(this.picturebox1.image);
                        dc.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   24,   26);
                        //dc.clear();

                        //dc.d
                        dc.dispose();
                        this.picturebox1.invalidate();
                }

可是水印打上去在打是重叠的
怎么样打上去在修改文字的时候能把先前的去掉
在打上修改后的文字
发表于:2007-01-11 17:22:141楼 得分:0
在内存中留一个原图的缓冲区备份,

修改的时候,把新的内容画在备份上
发表于:2007-01-11 17:25:262楼 得分:0
用control.invalidate方法
发表于:2007-01-11 17:26:273楼 得分:0
比如this.invalidate(this.clientrectangle)
发表于:2007-01-11 18:05:414楼 得分:0
樓上正確,用refresh()一下也可以吧。
发表于:2007-01-11 18:43:275楼 得分:0
private   void   textbox1_textchanged(object   sender,   system.eventargs   e)
{
this.picturebox1.invalidate();
}

private   void   picturebox1_paint(object   sender,   system.windows.forms.painteventargs   e)
{
e.graphics.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   24,   26);
}
发表于:2007-01-11 18:45:376楼 得分:0
如果想做的更好,再加上自动换行
发表于:2007-01-12 08:54:367楼 得分:0
private   void   textbox1_textchanged(object   sender,   system.eventargs   e)
{
this.picturebox1.invalidate();
}

private   void   picturebox1_paint(object   sender,   system.windows.forms.painteventargs   e)
{
e.graphics.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   24,   26);
}


这个代码   没效果


关于   平民百姓的
比如this.invalidate(this.clientrectangle)
我的代码是这样的

                private   void   textbox1_textchanged(object   sender,   eventargs   e)
                {
                        graphics   dc   =   graphics.fromimage(this.picturebox1.image);
                        dc.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   24,   26);
                        //dc.clear();

                        //dc.d
                        dc.dispose();
                        this.picturebox1.invalidate();
                }

不知道怎么改进
发表于:2007-01-12 08:59:088楼 得分:0
晕~
发表于:2007-01-12 09:40:149楼 得分:20
private   void   textbox1_textchanged(object   sender,   system.eventargs   e)
{
graphics   dc   =   graphics.fromimage(this.picturebox1.image);              
dc.dispose();
this.picturebox1.invalidate(picturebox1.clientrectangle);
}

private   void   picturebox1_paint(object   sender,   system.windows.forms.painteventargs   e)
{
graphics   dc   =e.graphics;
dc.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   picturebox1.clientrectangle);
}
发表于:2007-01-12 09:43:0210楼 得分:0
楼主你那样像image对象上写字,写上去就不好去掉了。你想想网上加了水印的图片如果能轻易去掉的话,那么加水印还有什么意义呢?
你应该重绘控件的工作区,而不是图像的,再说你往图像上写字,也不叫重绘了。
发表于:2007-01-13 08:52:0211楼 得分:0
楼主你那样像image对象上写字,写上去就不好去掉了。你想想网上加了水印的图片如果能轻易去掉的话,那么加水印还有什么意义呢?
你应该重绘控件的工作区,而不是图像的,再说你往图像上写字,也不叫重绘了。

有道理
我只是模拟一个效果就行了
并一定是一定要在图片上打上文字
我本来是textbox控件放上面来模拟的
因为有背景所以不好看
发表于:2007-01-13 12:43:2312楼 得分:0
我上面的代码就可以实现你要的效果了
发表于:2007-01-15 09:49:2813楼 得分:0
private   void   textbox1_textchanged(object   sender,   system.eventargs   e)
{
graphics   dc   =   graphics.fromimage(this.picturebox1.image);              
dc.dispose();
this.picturebox1.invalidate(picturebox1.clientrectangle);
}

private   void   picturebox1_paint(object   sender,   system.windows.forms.painteventargs   e)
{
graphics   dc   =e.graphics;
dc.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   picturebox1.clientrectangle);
}

你的代码在textbox1_textchanged的时候是可以触发picturebox1_paint事件的
但是文字没写上去
也没有清除效果
发表于:2007-01-15 10:58:0314楼 得分:0
private   void   textbox1_textchanged(object   sender,   system.eventargs   e)
{
graphics   dc   =   graphics.fromimage(this.picturebox1.image);              
dc.dispose();
this.picturebox1.invalidate(picturebox1.clientrectangle);
}

private   void   picturebox1_paint(object   sender,   system.windows.forms.painteventargs   e)
{
graphics   dc   =e.graphics;
dc.drawstring(this.textbox1.text,   new   font( "新宋体 ",   32),   brushes.red,   picturebox1.clientrectangle);
}


的代码是对的
谢谢了


快速检索

最新资讯
热门点击