主题:这道题该怎么做?关于graphics的。
chen_feng0312
[专家分:0] 发布于 2008-05-18 23:02:00
在form上建两个按钮,按一个出现一张笑脸,另一个出线一张苦脸。脸要用graphics画出来。
当然当在两个按钮中切换时,比如先按笑脸在按苦脸,笑脸应该没有了,只有苦脸。
可能的话请给出源码。并不是我偷懒,我已经做了好几天做不出来了。谢谢各位大侠,给出源码便于我学习。
回复列表 (共6个回复)
沙发
jzyray [专家分:20610] 发布于 2008-05-19 12:25:00
提示only:
你先准备笑脸和苦脸的图片,然后Graphics对象.DrawImage绘出相应的图片就可以了
Graphics对象可以使用Graphics.FromHwnd等方法生成
板凳
chen_feng0312 [专家分:0] 发布于 2008-05-23 19:24:00
Graphics grsmile;
Graphics grsad;
private void smilebutton_Click(object sender, System.EventArgs e)
{
grsmile=this.CreateGraphics();
Rectangle rect = new Rectangle(10,10,30,30);
grsmile.DrawRectangle(Pens.Green,rect);
}
private void sadbutton_Click(object sender, System.EventArgs e)
{
grsad = this.CreateGraphics();
Rectangle rect = new Rectangle(80,80,30,30);
grsad.DrawRectangle(Pens.Red,rect);
}
这是我的小代码。两个graphics对象grsmile和grsad。都是画一个矩形。我的问题是:当点击smilebutton_Click出现grsmile的矩形而同时grsad的矩形消失。反过来也一样。请问这该怎么做?
3 楼
jzyray [专家分:20610] 发布于 2008-05-24 16:14:00
Graphics.Clear方法可以用背景色清除绘制内容,然后你再画
4 楼
chen_feng0312 [专家分:0] 发布于 2008-05-25 15:28:00
Graphics grsmile;
Graphics grsad;
private void smilebutton_Click(object sender, System.EventArgs e)
{
grsmile=this.CreateGraphics();
Rectangle rect = new Rectangle(10,10,30,30);
grsmile.DrawRectangle(Pens.Black,rect);
if(grsad!=null){grsad.Clear(Color.Teal);}
}
private void sadbutton_Click(object sender, System.EventArgs e)
{
grsad = this.CreateGraphics();
Rectangle rect = new Rectangle(80,80,30,30);
grsad.DrawRectangle(Pens.Red,rect);
if(grsmile!=null){grsmile.Clear(Color.Teal);}
}
这事我修改后的代码,加了两个if判断。但还是不对。color.teal好像把整个背景色都换了。
5 楼
jzyray [专家分:20610] 发布于 2008-05-26 18:48:00
你用一个Graphics对象就可以了,并且不用设置成全局变量,用过之后记得要用Graphics对象.Dispose();释放GDI资源。
如果你不想全部重绘成背景色,那你就替换相应的矩形好了(比如删除笑脸就是用该位置的背景覆盖笑脸)
6 楼
jbo126 [专家分:40] 发布于 2008-06-07 13:41:00
private void smilebutton_Click(object sender, System.EventArgs e)
{
Graphics g=this.CreateGraphics();
g.Clear(this.BackColorl);
Rectangle rect = new Rectangle(10,10,30,30);
g.DrawRectangle(Pens.Black,rect);
.Dispose();
}
private void sadbutton_Click(object sender, System.EventArgs e)
{
Graphics g=this.CreateGraphics();
g.Clear(this.BackColorl);
Rectangle rect = new Rectangle(80,80,30,30);
g.DrawRectangle(Pens.Red,rect);
.Dispose();
}
我来回复