PictureBox.CreateGraphics()和e.Graphics;的区别

lgw26046044 2010-10-11 04:29:20
我对C#并不太熟悉,只是知道一些基础,原来我一直认为PictureBox.CreateGraphics()和e.Graphics;都是获得了Graphics对象没什么区别,但是 我前一阵子遇到了这样一个问题:
向下面这样写就一切正常,如果将g=e.Graphics;改成pictureBox.CreateGraphics()就不好使了(pictureBox是一个已定义的控件)
private void pictureBox_Paint(object sender, PaintEventArgs e)
{

Graphics g;
g = e.Graphics;

\\g=pictureBox.CreateGraphics();

Pen myPen = Pens.Blue;
for (int i = 0; i < pictureBox.ClientRectangle.Width; i++)
{
g.DrawLine(myPen, new Point(i, 0), new Point(i, pictureBox.ClientRectangle.Bottom));
i += 10;
}

for (int j = 0; j < pictureBox.ClientRectangle.Height; j++)
{
g.DrawLine(myPen, new Point(0, j), new Point(pictureBox.ClientRectangle.Right, j));
j += 10;
}
g.Dispose();

}
...全文
860 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerodegrees 2010-10-14
  • 打赏
  • 举报
回复
画图应该尽量在picturebox上画,这样不容易乱。思路清晰
兔子-顾问 2010-10-14
  • 打赏
  • 举报
回复
如果打算自己绘图,你可以考虑用Panel。
反之。你可以
Graphics g = Graphics.FromImage(PictureBox1.Image);
铛铛 2010-10-14
  • 打赏
  • 举报
回复
private void pictureBox_Paint(object sender, PaintEventArgs e)

个人认为e应该绘制这个pictureBox的图形句柄


PictureBox.CreateGraphics()是将要在PictureBox上绘制图形所要用到的句柄
lgw26046044 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 heddaz 的回复:]
e.Graphics 获得的是触发这个事件的控件的图形句柄,来自参数
而 PictureBox.CreateGraphics() 则不与当前控件关联
[/Quote]

可是,绘图是在PictureBox控件上的呀,触发该事件的控件,不就是PictureBox么???
oeasypeasy 2010-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zxp8819 的回复:]
private void pictureBox_Paint(object sender, PaintEventArgs e)
个人认为e应该绘制这个pictureBox的图形句柄
PictureBox.CreateGraphics()是将要在PictureBox上绘制图形所要用到的句柄
[/Quote]
[Quote=引用 4 楼 wuyazhe 的回复:]
如果打算自己绘图,你可以考虑用Panel。
反之。你可以
Graphics g = Graphics.FromImage(PictureBox1.Image);
[/Quote]

GDI+。。
建议在panel上绘制。
大飞飞虫 2010-10-11
  • 打赏
  • 举报
回复
e.Graphics 获得的是触发这个事件的控件的图形句柄,来自参数
而 PictureBox.CreateGraphics() 则不与当前控件关联
附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[领航车(leader)] · 训练集:414 张 · 验证集:39 张 · 测试集:20 张 · 总计:473 张 该数据集聚焦于室内走廊环境中对领航车的精准识别与定位,具备高度场景专一性与实际应用价值。图像采集于光线均匀、结构规整的建筑内部通道,背景干扰因素少,有利于模型在复杂环境下的目标提取能力训练。领航车作为核心检测对象,在不同距离和角度下均被清晰标注,为智能导航系统、自动化引导设备等提供可靠的数据支持。... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 77 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9950** mAP50-95 | 0.9141 Precision | 0.9985 Recall | 1.0000 train/box_loss | 0.5224 train/cls_loss | 0.2526 val/box_loss | 0.4307 val/cls_loss | 0.1407 【训练过程分析】 77 轮训练后 mAP50 达到 0.9950,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.9141,和 mAP50 差距仅 0.08,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9985、Recall 1.000... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。
内容概要:本文围绕基于序贯蒙特卡洛模拟法的配电网可靠性评估展开深入研究,提出并实现了结合Matlab的仿真方法,用于精确评估配电网在多种故障场景下的供电可靠性。研究充分考虑了元件故障、时序恢复过程及系统运行的随机性与动态性,采用序贯抽样技术模拟系统状态转移过程,实现了对停电频率、停电时间、供电可用率等关键可靠性指标的量化分析。文中系统阐述了算法的设计流程、事件抽样机制、状态序列生成逻辑以及系统恢复策略,并通过典型算例验证了该方法在复杂配电网络中的有效性与实用性,为配电网的规划、运行与优化提供了科学的评估工具。; 适合人群:具备电力系统分析基础和Matlab编程能力的高校研究生、科研人员,以及从事配电网规划设计、运行维护与可靠性管理的工程技术人员。; 使用场景及目标:①掌握序贯蒙特卡洛模拟法在电力系统可靠性评估中的核心原理与实现方法;②学习利用Matlab构建配电网时序仿真模型,进行可靠性指标计算与分析;③为配电网的设备选型、网络结构优化、故障应对策略制定及韧性提升提供数据支撑与决策依据; 阅读建议:建议读者结合文中提供的Matlab代码实现步骤,动手复现实验过程,深入理解状态抽样、时序序列模拟、故障处理逻辑与指标统计等关键环节,并可进一步将该方法拓展应用于含分布式电源、储能系统等新型元件的现代复杂配电网可靠性评估研究。

111,128

社区成员

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

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

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