回 帖 发 新 帖 刷新版面

主题:这道题该怎么做?关于graphics的。

在form上建两个按钮,按一个出现一张笑脸,另一个出线一张苦脸。脸要用graphics画出来。

当然当在两个按钮中切换时,比如先按笑脸在按苦脸,笑脸应该没有了,只有苦脸。

可能的话请给出源码。并不是我偷懒,我已经做了好几天做不出来了。谢谢各位大侠,给出源码便于我学习。

回复列表 (共6个回复)

沙发

提示only:

你先准备笑脸和苦脸的图片,然后Graphics对象.DrawImage绘出相应的图片就可以了
Graphics对象可以使用Graphics.FromHwnd等方法生成

板凳

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 楼

Graphics.Clear方法可以用背景色清除绘制内容,然后你再画

4 楼

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 楼

你用一个Graphics对象就可以了,并且不用设置成全局变量,用过之后记得要用Graphics对象.Dispose();释放GDI资源。

如果你不想全部重绘成背景色,那你就替换相应的矩形好了(比如删除笑脸就是用该位置的背景覆盖笑脸)

6 楼

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();
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册