社区
C#
帖子详情
在winform画图的问题?
康少_小贱
2011-08-11 05:53:46
需求是这样的,我在winform中,有一个panel,我在panel上画图,还有一个Button,但我单击这button的时候,就可以在panel上画图,再次单击的时候,上次的图还在,并且这次的图也在,两个重叠在一起了。也就是第一次单击的时候生成的图在,第二次也在,一直都在哦!
我想是单击一次,只能显示一次图,不要重叠。各位哥哥姐姐,帮帮忙啊!小弟不才,在此谢过
...全文
411
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
打赏
举报
回复
在画之前,重新画一个 白色的 背景
matlab慢图,C#调用matlab
画图
,解决图像嵌入
Winform
窗体和首次
画图
慢的
问题
该博客介绍了如何使用C#调用MATLAB进行图像绘制,并将图像嵌入到
Winform
窗体中,同时解决了首次
画图
速度慢的常见
问题
。提供了一个名为CANDmatalbDemo的实例,包括项目的文件结构和核心代码,帮助开发者实现高效地在C#应用中集成MATLAB绘图功能。
C
winform
画图
程序(附解决方案)
这是一个用C#编写的
WinForm
窗体
画图
程序,专为初学者设计,在Visual Studio 2010环境下开发。它实现基础
画图
功能,解决常见编程
问题
,经网络资料优化后基本可用。用户下载解决方案文件,用VS2010打开编译运行即可,有助于学习C#和
WinForm
开发。
读取串口数据
画图
本文介绍了使用C#进行串口通信,读取FPGA卡器的8096bytes回复数据,并基于这些数据在
Winform
中进行
画图
的过程。作者遇到的挑战包括串口配置、数据接收延迟、数据存储为乱码以及在
Winform
中无闪烁
画图
。通过解决这些
问题
,实现了串口数据的正确接收和显示。
Winform
动态
画图
不闪
本文介绍了一种在
WinForm
中实现动态
画图
且无闪烁现象的有效方法。通过在自定义PictureBox控件中使用Action传递
画图
方法,并确保在OnPaint事件中绘制,避免了传统双缓冲设置可能带来的
问题
。附带示例代码展示了如何应用此技术进行流畅的动态绘图。
透明窗体
画图
:C
WINFORM
的完美解决方案
该博客介绍了基于C#
WINFORM
的透明窗体
画图
解决方案。采用两层透明窗体重叠方式,解决传统透明窗体绘图难以兼顾鼠标穿透和清晰绘图的
问题
。代码简单易用,适用于桌面标注、透明窗口游戏、屏幕录制等场景,为开发者提供高效工具。
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章