C# 使用图形在面板内的面板上绘图。第一个面板比第二个大

Posted

技术标签:

【中文标题】C# 使用图形在面板内的面板上绘图。第一个面板比第二个大【英文标题】:C# Drawing on a panel inside a panel using Graphics. The first panel is bigger than the second 【发布时间】:2011-10-17 13:26:23 【问题描述】:

我有两个面板:一个始终可见,另一个稍后声明并属于第一个面板: "panel1.Controls.Add(this.Panel2);"

整个程序总是有 2 个文本框、7 个用作按钮的图片框、3 个标签和 1 个面板(它们在程序开始运行时立即声明)。

声明第二个面板后,将激活绘图功能。该函数在第二个面板上绘制。

如果 Panel2 比 Panel1 高或宽(或两者兼有)(Panel2 变为部分可见),第一次调用绘图函数时,绘图函数完成后第二个面板变为空白。我必须重新调整窗口的大小,或者重新调整我的绘图(绘图函数在很多情况下都会被调用)。如果 Panel2 在各方面都小于 Panel1,则问题不会发生。

Panel2 被操作的顺序如下: 宣布小组2; 调整 Panel2 的属性; 将 Panel2 添加到 Panel1; 在 Panel2 上绘图; 其他 Panel2 相关的东西。

起初我在 Panel1 中使用按钮和 PictureBox。仅当按钮未使用其默认外观(无论 PictureBox 的大小)时,才会出现此问题。后来我用 Panel 改变了 PictureBox,用 PictureBoxes 改变了按钮(我想制作自定义按钮)。在那次改变之后,我又遇到了这个问题。

代码很大,我不确定是否有必要。我肯定对代码的算法有问题。

【问题讨论】:

【参考方案1】:

你画错了。

您需要在 Paint 处理程序中进行绘制,以便在重新绘制控件时重新绘制您的内容。 你永远不应该画到control.CreateGraphics()

【讨论】:

谢谢!谢谢!谢谢!谢谢!这解决了问题。我希望我不会遇到任何其他油漆问题。

以上是关于C# 使用图形在面板内的面板上绘图。第一个面板比第二个大的主要内容,如果未能解决你的问题,请参考以下文章

将多个复杂图组合为单个图形中的面板

WPF学习第九章 使用Canvas面板进行基于坐标的布局

canvas操作图片,进行面板画图,旋转等

Python:循环内的子图:第一个面板出现在错误的位置

C# 获取窗体上控件的位置

C# 在面板周围拖动控件