怎么让它消失?GDI问题

bryht 2009-11-02 11:03:26
public void DrawCircle(Point p)
{
pBomb = p;
Timer t = new Timer();
t.Tick += new EventHandler(t_Tick);
t.Interval = 200;
t.Start();

}
void t_Tick(object sender, EventArgs e)
{
using (Timer t = new Timer())
{
pBomb.Y -= 15;
using (Graphics g = _formBase.CreateGraphics())
{
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
}
}
}
这样出的效果是一个个园连成一条线往上长,
我想要一个园往上移,怎么搞?怎么将下边已经生成的园搞掉?
...全文
144 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
bryht 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jbo126 的回复:]
6\7楼的都可以了,你坐标往上走,而以前画过的还在那!用g.Clear(_formBase.BackColor);可以在绘制之前先擦除以前画的!

[/Quote]
虽然已经结贴了,还是问问吧,我知道有无私奉献的人的,哈哈
有人会局部刷新吗?
g.Clear(_formBase.BackColor);局部的
jbo126 2009-11-03
  • 打赏
  • 举报
回复
根据你这个具体的应用,这个不用局部刷新吧?
如果你非想这么做的话可以将绘制代码放到paint方法里,然后用Invalidate(rectangle)这个方法来实现局部刷新,不过这样的话坐标的计算又是另一大头疼的问题!
cecilia2006 2009-11-02
  • 打赏
  • 举报
回复
this.Refresh(); 需要刷新重绘下的吧
zhaoyungang111 2009-11-02
  • 打赏
  • 举报
回复
楼主,我怎么运行不了呢,我是新手别笑话我,错误是
错误 1 非静态的字段、方法或属性“System.Windows.Forms.Control.CreateGraphics()”要求对象引用 E:\testAnswer\Answer\Answer\_formBase.cs 33 37 _formBase
qs99521 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovefootball 的回复:]
g.Clear(_formBase.BackColor);//清除
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
[/Quote]

this.Refresh();
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
lovefootball 2009-11-02
  • 打赏
  • 举报
回复
你要不就用背景色去清除,要不就每次只画需要的
lovefootball 2009-11-02
  • 打赏
  • 举报
回复
g.Clear(_formBase.BackColor);//清除
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
wartim 2009-11-02
  • 打赏
  • 举报
回复
换个思路,不是擦掉以前的图,而是每次重画所要的
gomoku 2009-11-02
  • 打赏
  • 举报
回复
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
}
gomoku 2009-11-02
  • 打赏
  • 举报
回复
void t_Tick(object sender, EventArgs e) 
{
pBomb.Y -= 15;
this.Invalidate();
}

protected override void OnPaint(PaintEventArgs e)
{
g.FillEllipse(Brushes.Black, pBomb.X, pBomb.Y, 15, 15);
}
bryht 2009-11-02
  • 打赏
  • 举报
回复
private Point pBomb;还有个全局变量
jbo126 2009-11-02
  • 打赏
  • 举报
回复
6\7楼的都可以了,你坐标往上走,而以前画过的还在那!用g.Clear(_formBase.BackColor);可以在绘制之前先擦除以前画的!
bryht 2009-11-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhaoyungang111 的回复:]
楼主,我怎么运行不了呢,我是新手别笑话我,错误是
错误 1 非静态的字段、方法或属性“System.Windows.Forms.Control.CreateGraphics()”要求对象引用 E:\testAnswer\Answer\Answer\_formBase.cs    33 37 _formBase

[/Quote]
你改成this

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧