社区
C#
帖子详情
在winform画图的问题?
康少_小贱
2011-08-11 05:53:46
需求是这样的,我在winform中,有一个panel,我在panel上画图,还有一个Button,但我单击这button的时候,就可以在panel上画图,再次单击的时候,上次的图还在,并且这次的图也在,两个重叠在一起了。也就是第一次单击的时候生成的图在,第二次也在,一直都在哦!
我想是单击一次,只能显示一次图,不要重叠。各位哥哥姐姐,帮帮忙啊!小弟不才,在此谢过
...全文
376
19
打赏
收藏
在winform画图的问题?
需求是这样的,我在winform中,有一个panel,我在panel上画图,还有一个Button,但我单击这button的时候,就可以在panel上画图,再次单击的时候,上次的图还在,并且这次的图也在,两个重叠在一起了。也就是第一次单击的时候生成的图在,第二次也在,一直都在哦! 我想是单击一次,只能显示一次图,不要重叠。各位哥哥姐姐,帮帮忙啊!小弟不才,在此谢过
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mjp1234airen4385
2011-08-12
打赏
举报
回复
生成一个后台bmp直接,你第一次画完就保存到bmp上。
康少_小贱
2011-08-12
打赏
举报
回复
[Quote=引用 12 楼 shijie_li007 的回复:]
每次画图的方法,都记在一个栈内,返回上一步操作,就是把新的出栈,然后清理panel,再依次执行栈内的操作
[/Quote]
大哥,能说的清楚点吗?等你!!!!
shijie_li007
2011-08-12
打赏
举报
回复
每次画图的方法,都记在一个栈内,返回上一步操作,就是把新的出栈,然后清理panel,再依次执行栈内的操作
康少_小贱
2011-08-12
打赏
举报
回复
[Quote=引用 9 楼 andywangguanxi 的回复:]
设一个bool变量,单击过一次图在了,就把它设成true不再执行画图的代码
[/Quote]
那如果我再想button的时候,那如何我上次的图抹掉呢?
shijie_li007
2011-08-12
打赏
举报
回复
[Quote=引用 6 楼 zhongkang567 的回复:]
引用 5 楼 shijie_li007 的回复:
可以用panel.CreateGriphc().Clear()来清除啊
panel有这个CreateGriphc()方法?
[/Quote]
有啊,我前两天才用过。 不好意思,打错了,panel的 CreateGraphics().Clear()
EdsionWang
2011-08-12
打赏
举报
回复
设一个bool变量,单击过一次图在了,就把它设成true不再执行画图的代码
康少_小贱
2011-08-12
打赏
举报
回复
[Quote=引用 7 楼 enaking 的回复:]
用背景色再重绘一下次你上一个图形
[/Quote]
不好用
enaking
2011-08-12
打赏
举报
回复
用背景色再重绘一下次你上一个图形
康少_小贱
2011-08-12
打赏
举报
回复
[Quote=引用 5 楼 shijie_li007 的回复:]
可以用panel.CreateGriphc().Clear()来清除啊
[/Quote]
panel有这个CreateGriphc()方法?
shijie_li007
2011-08-12
打赏
举报
回复
可以用panel.CreateGriphc().Clear()来清除啊
康少_小贱
2011-08-12
打赏
举报
回复
还有可能是我的UI上面的画的图形太多,来不及清楚吧,有好的解决方案吗
康少_小贱
2011-08-12
打赏
举报
回复
[Quote=引用 2 楼 isjoe 的回复:]
两次画图之间,调用panel的Refresh();
[/Quote]
Refresh()是重绘自己和任何的子控件,我只想重绘子控件,不需要在重绘自己了!那怎么办?谢谢
niuniu186
2011-08-12
打赏
举报
回复
可以用clear(背景颜色)或者refresh
styshoo1986
2011-08-12
打赏
举报
回复
每一个空间自己都可以refresh的
Cloud_drift
2011-08-12
打赏
举报
回复
不要画在控件上,每次都画在一个 bitmap 里面,然后界面上用 pictureBox 显示这个 bitmap。
该用户已备禁用
2011-08-12
打赏
举报
回复
重新绑定一下不就好了。。。
shijie_li007
2011-08-12
打赏
举报
回复
刚看到,我简单写了下,看能不能供你参考
public interface IDraw {
void Draw();
}
public class Line:IDraw {
private Graphics g;
private Point startPoint;
private Point endPoint;
public Line(Graphics g, Point p1, Point p2) {
this.g = g;
this.startPoint = p1;
this.endPoint = p2;
}
public void Draw() {
g.DrawLine(new Pen(Color.Black),startPoint.X,startPoint.Y,endPoint.X,endPoint.Y );
}
}
public class Cycle : IDraw {
private Graphics g;
private Point centerPoint;
private float radius;
public Cycle(Graphics g, Point p, float r) {
this.g = g;
this.centerPoint = p;
this.radius = r;
}
public void Draw() {
g.FillEllipse(new SolidBrush(Color.Black),centerPoint.X,centerPoint.Y,radius,radius);
}
}
public partial class Form1 : Form {
private Stack<IDraw> drawStack;
public Form1() {
InitializeComponent();
drawStack = new Stack<IDraw>();
}
private void button1_Click(object sender, EventArgs e) {
Draw(new Cycle(this.panel1.CreateGraphics(), new Point(0, 0), 100),drawStack);
}
private void button2_Click(object sender, EventArgs e) {
Draw(new Line(this.panel1.CreateGraphics(),new Point(0,0),new Point(100,100) ),drawStack);
}
private void button3_Click(object sender, EventArgs e) {
Last();
}
private void Draw(IDraw d,Stack<IDraw> stack) {
stack.Push(d);
d.Draw();
}
private void Last() {
drawStack.Pop();
this.panel1.CreateGraphics().Clear(Color.White);
Stack<IDraw> tempStack = new Stack<IDraw>();
while (drawStack.Count > 0) {
IDraw d = drawStack.Pop();
this.Draw(d,tempStack);
}
drawStack = tempStack;
}
}
不知道怎么上图啊
isjoe
2011-08-11
打赏
举报
回复
两次画图之间,调用panel的Refresh();
xuld
2011-08-11
打赏
举报
回复
在画之前,重新画一个 白色的 背景
C#
WinForm
画图
工具
C#
WinForm
画图
工具,实现基本
画图
面板功能
C#
winform
画图
程序(附解决方案,挺不错的)
自己学习C#,编写的
画图
程序,开发工具是vs2010,
winform
窗体的程序,很简单的功能,解决了一些小的毛病,基本可以使用,参考了网上的一些资料。C#初学者看看挺好的,有一定帮助。
从新手小白进入
WinForm
编程 (VS2019)
WinForm
框架 是 Windows Form 的简称,是美国微软公司Microsoft开发基于 .NET Framework 平台的桌面运用程序框架,一般使用 C#语言 编写。
WinForm
框架可用于设计窗体和可视控件,采用面向对象语言C#,可快速...
winform
画图
资源
winform
画图
教程,有关画笔画刷 实现window中
画图
软件功能
winform
画图
板(drawing board)
winform
画图
板(drawing board)
C#
110,555
社区成员
642,563
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章