如何删除c#windows窗体中的绘制圆?
我在Windows窗体中画了一个圆圈
Pen pen = new Pen(Color.Black, 3); Graphics gr = this.CreateGraphics(); gr.DrawEllipse(pen, 5,5,20,20);
如何删除它…
您可以使要刷新的绘图区域无效,例如:
this.Invalidate();
在表格上……
你必须清除你的图形:
Graphics.Clear();
但所有绘制的数字都将被清除。 简单地说,您将需要重绘除圆圈之外的所有数字。
此外,您可以使用Invalidate方法:
Control.Invalidate()
它表示要在Graphics中重绘的区域。 但是如果你有交叉的数字,你将不得不重绘你想要在除圆圈之外的区域内可见的数字。
这可能会变得混乱,您可能想要了解如何设计控制图或使用任何图形布局库 。
假设您正在订阅Paint事件或覆盖受保护的OnPaint例程,那么您将需要执行以下操作:
bool paint = false; protected override void OnPaint(object sender, PaintEventArgs e) { if (paint) { // Draw circle. } }
然后,当你想停止画圆圈时:
paint = false; this.Invalidate(); // Forces a redraw
你本身并没有“删除”它,没有什么可以删除。 这是一个绘图,你在它上面绘制了一些东西,或者你可以调用Graphics.Clear()
方法 。
您可以使用您正在绘制的控件的backColor制作相同尺寸的图形
在你的代码之后使用来清除你的数字。
Pen p = new Pen(this.BackColor); gr.DrawEllipse(p, 5,5,20,20);
如果您正在使用Invalidate()
并且无法正常工作,请创建一个panel.Refresh()
。
这对你有用。
事实上,你可以删除你的圈子,除了你的圈子。
您需要的一切就像是要清除区域的“之前状态”的截图,从中制作TextureBrush
。 您可以通过以下方式实现该步骤:
Bitmap _Background = new Bitmap(this.Width, this.Height); Graphics.FromImage(_Background).CopyFromScreen(this.Left, this.Top, 0, 0, this.Size);
第一行将为您提供Windows窗体大小的位图。 第二行将在_Background
-bitmap中保存它的屏幕截图。
现在你创建一个TextureBrush
:
Brush brsBackground = new TextureBrush(_Background);
您需要的下一件事是圆的尺寸,因此如果它们不是固定值,您应该将它们保存到变量中。 当你拿到它们时,你可以清除这样的特定区域:
Graphics gr = this.CreateGraphics(); gr.FillEllipse(brsBackground, 5, 5, 20, 20); // values referred to your example
完成!
甚至复杂的数字也可以被删除,例如GraphicsPath
:
GraphicsPath gp = new GraphicsPath(); // any kind of GraphicsPath gr.FillRegion(brsBackground, new Region(gp));
从c中删除绘制的圆圈非常简单。
只有四个步骤: –
上述就是C#学习教程:如何删除c#windows窗体中的绘制圆?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 打开涡轮增压应用程序
- 转到您绘制圆圈的命令
- 拖动命令
- 点击删除按钮
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1006878.html