VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 845|回复: 4

C#画线的新问题,

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-11 15:30:01 | 显示全部楼层 |阅读模式
向各位请教,
//代码 1
Graphic g = panel.CreateGraphics();
g.DrawEllipse(new Pen(Color.Red), 50, 50, Math.Abs(MousePoint.X-50), Math.Abs(MousePoint.Y-50));
这会的结果是,鼠标走过的地方都变成了红色,也就是画了很多个圆,但实际上我只要一个。
如果修改一下代码:
//代码2
Graphic g = panel.CreateGraphics();
if(oldPoint != Point.Empty)
  g.DrawEllipse(new Pen(panel.BackColor), 50, 50, Math.Abs(MousePoint.X-50), Math.Abs(MousePoint.Y-50));
g.DrawEllipse(new Pen(Color.Red), 50, 50, Math.Abs(MousePoint.X-50), Math.Abs(MousePoint.Y-50));
这样做好象对了,但是如果控件上加了背景画之类的话,效果跟上面差不多了只是颜色不一样,背景画看不到了。

向各位请教,代码要怎么写才好,但是不能在控件的Paint事件里做,
先在此谢谢大家帮忙
回复

使用道具 举报

0

主题

13

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-9 16:30:01 | 显示全部楼层
你画的时候要先搽除掉你原来的绘制区域,或者发送Invalidate重绘你开始已经绘制的区域
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-4-11 21:30:02 | 显示全部楼层
njuwelkin  感觉不太好,绘制的时候,闪烁很厉害
回复

使用道具 举报

0

主题

9

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-4-12 13:15:01 | 显示全部楼层
每次画之前要先清屏再画
回复

使用道具 举报

0

主题

13

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-5-27 18:45:01 | 显示全部楼层
或者你先画到缓存上去(比如画到Bitmap上去),最后再绘制到显示设备上去
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表