关于PaintEventArgs e的问题。。。我是菜鸟

Cong1221 2010-07-19 02:17:40
public void DrawRectangleInt(PaintEventArgs e)
{

// Create pen.
Pen blackPen = new Pen(Color.Black, 3);

// Create location and size of rectangle.
int x = 0;
int y = 0;
int width = 200;
int height = 200;

// Draw rectangle to screen.
e.Graphics.DrawRectangle(blackPen, x, y, width, height);
}

这段代码是我在网上看到的 用来画矩形
我想请问一下 如果我在其他事件中 比如button_click中如果想调用这个函数 那个PaintEventArgs e部分应该怎么去处理啊。。。。这个部分应该调用什么东西啊 我是个菜鸟 看了网上的文章也没有看懂。。。希望有达人可以帮忙耐心解答一下。。。谢谢各位了。。。。
...全文
1667 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztltgg 2010-07-19
  • 打赏
  • 举报
回复
Graphics是没有公开的构造函数,不能new的
PaintEventArgs的Graphics属性不是一个返回一个简单的成员变量

public Graphics Graphics
{
get
{
if ((this.graphics == null) && (this.dc != IntPtr.Zero))
{
this.oldPal = Control.SetUpPalette(this.dc, false, false);
this.graphics = Graphics.FromHdcInternal(this.dc);
this.graphics.PageUnit = GraphicsUnit.Pixel;
this.savedGraphicsState = this.graphics.Save();
}
return this.graphics;
}
}


new PaintEventArgs 出来的东西,graphics 也是空引用的
dazhabai 2010-07-19
  • 打赏
  • 举报
回复
可以以new PaintEventArgs()为参数传进去
wuzhenwz 2010-07-19
  • 打赏
  • 举报
回复
直接在按钮处理的时间中使用new Graphics()
hztltgg 2010-07-19
  • 打赏
  • 举报
回复 1
[Quote=引用楼主 ray_opg 的回复:]
比如button_click中如果想调用这个函数 那个PaintEventArgs e部分应该怎么去处理啊
[/Quote]

这个想法本就存在问题,windows窗口程序和Dos程序是不一样的,图片不是你让系统画上去的,而是系统要画图片了,来问你用那个函数画的,因为窗口有最小化,别的窗口挡掉等情况发生,所以在需要重新画的时候,系统就有一个消息发过来,你负责画就可以了,默认就是OnPaint这个方法,带来了e.Graphics这个画板。

所以正确的方法是需要改变思维,剥离画图和显示两个逻辑,在后台画图,在OnPaint里显示。
兔子-顾问 2010-07-19
  • 打赏
  • 举报
回复
PaintEventArgs pe = new PaintEventArgs(this.CreateGraphics(),this.ClientRectangle);
DrawRectangleInt(pe);
showjancn 2010-07-19
  • 打赏
  • 举报
回复
其实绘制的关键是在e.Graphics中。
你要在其他事件中绘制有两个方案,
1:直接在这个Graphics中相应的操作。
2:先绘制到一个缓冲区中,如Image。再在OnDraw或其它事件中把这个缓冲区显示出来。

111,086

社区成员

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

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

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