picturebox界面paint消息的咨询,高手进,在线等

qiuxin425 2010-10-25 09:06:15
我在picturebox里面的paint消息中画了一些线段,想鼠标可以点击线段进行移动,现在的做法是点击后对整个的
picturebox.Invalidate();当线段比较多时有点不理想。
询问能否对某个特定区域进行重绘,例如里面有个矩形,移动它时只对他的区域重绘,谢谢!

在线等,最好有代码,分数可以提高!
...全文
107 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lorenliu 的回复:]

可以参考http://topic.csdn.net/u/20091023/15/420d20ce-af7d-461a-9033-f2a4a3323757.html
那里我用的是图片,你也可以定义线段对象来做同样的事情
[/Quote]

牛人 太有才了
LorenLiu 2010-10-25
  • 打赏
  • 举报
回复
可以参考http://topic.csdn.net/u/20091023/15/420d20ce-af7d-461a-9033-f2a4a3323757.html
那里我用的是图片,你也可以定义线段对象来做同样的事情
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 haveonedream 的回复:]

双缓冲

public frm_Main()
{
InitializeComponent();
this.DoubleBuffered = true;
SetStyle(ControlStyles.UserPaint, true);
……
[/Quote]
谢谢!
HaveOneDream 2010-10-25
  • 打赏
  • 举报
回复
双缓冲

public frm_Main()
{
InitializeComponent();
this.DoubleBuffered = true;
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.OptimizedDoubleBuffer, true); // 双缓冲

}

protected override void OnPaint(PaintEventArgs e)
{
Rectangle rect = e.ClipRectangle;
BufferedGraphicsContext currentContext = new BufferedGraphicsContext();
BufferedGraphics myBuffer = currentContext.Allocate(e.Graphics, e.ClipRectangle);
Graphics g = myBuffer.Graphics;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
//绘制背景图片
g.DrawImage(namespace.Properties.Resources.back, 0, 0, rect.Width, rect.Height);
//当前时间
Brush b = new SolidBrush(Color.White);
Font font = new Font("宋体", 15f / 1024 * this.Width, FontStyle.Regular);
g.DrawString(DateTime.Now.ToString("HH:mm:ss"), font, b, 185f / 1024 * this.Width, 20f / 768 * this.Height);

myBuffer.Render(e.Graphics);
g.Dispose();
myBuffer.Dispose();//释放资源
}
wei322x 2010-10-25
  • 打赏
  • 举报
回复
C#.net,Javascript,AJAX,SilverLight,HTML5,CSS3,WPF,WCF,Win Phone技术交流群118907238
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 haveonedream 的回复:]

this.Invalidate(new Rectangle(0, 0,100,100);
矩形区域重绘
[/Quote]

刚试了一下,这个方法可行,多谢

再等等,看看还有没有高手
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lrh_079 的回复:]

使用双缓冲看效果是否会好点
[/Quote]

怎么做呢?
lrh_079 2010-10-25
  • 打赏
  • 举报
回复
使用双缓冲看效果是否会好点
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 haveonedream 的回复:]

this.Invalidate(new Rectangle(0, 0,100,100);
矩形区域重绘
[/Quote]

是一个不错的想法,但有个问题,如果这个矩形区域里面有文本的画,我拉动它的边缘进行移动,例如往下,应该就没有达到重绘吧。
HaveOneDream 2010-10-25
  • 打赏
  • 举报
回复
this.Invalidate(new Rectangle(0, 0,100,100);
矩形区域重绘
qiuxin425 2010-10-25
  • 打赏
  • 举报
回复
难道只能全部重绘么
内容概要:本文档详细介绍了PlatforMax单机版5.0.1-rc6版本的完整安装流程,涵盖硬件、操作系统、硬盘、网络等前置环境要求,并提供了Ubuntu 20.04.3 Desktop与Server两种系统的安装步骤。重点强调系统需全新安装、禁用自动更新、正确设置磁盘分区以充分利用全部空间,以及创建指定用户名“amax”。随后指导用户通过运行离线安装包完成PlatforMax的部署,包括校验、解压、输入安装码、驱动与Docker配置等环节。安装完成后需通过浏览器访问初始化页面完成最终配置。文档还列举了常见问题及应对措施,特别是NVIDIA驱动不兼容时的处理方式,允许用户手动提供驱动或跳过安装以确保主程序顺利部署。; 适合人群:具备Linux系统操作基础,从事AI平台运维、系统集成或技术支持的相关技术人员,尤其适用于负责本地化部署高性能计算平台的工程师。; 使用场景及目标:①为满足AI训练与推理需求的企业级用户提供PlatforMax平台的本地单机部署方案;②指导技术人员完成从系统准备到平台上线的全流程安装,确保环境合规、数据安全和系统稳定运行;③解决新GPU驱动兼容性等问题,保障平台可扩展性和实用性。; 阅读建议:在实际操作前通读全文,重点关注硬件配置、磁盘管理、用户命名规则及驱动处理策略,建议在测试环境中先行演练,避免因误操作导致数据丢失或安装失败。

111,129

社区成员

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

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

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