获取Graphics对象

在.NET中,可以通过以下方法获取Graphics对象。
1. 从Paint事件的参数中获取。
窗体和许多控件都有一个Paint事件,有一个PaintEventArgs类型的参数e。
None.gif private   void  Form1_Paint( object  sender, System.Windows.Forms.PaintEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
//获取Graphic对象
InBlock.gif
            Graphics g = e.Graphics;
InBlock.gif            
//书写绘图代码
InBlock.gif
            g.DrawRectangle(Pens.Red,10,10,100,50);
InBlock.gif            
//释放Graphic对象占用的资源
InBlock.gif
            g.Dispose();
InBlock.gif
ExpandedBlockEnd.gif        }
窗体的Paint事件是最常用于放置绘图代码的地方,每当窗体被其他窗体挡住,再次显示的时候,窗体的所有内容必须被重绘,否则会得到一个空白的窗体。

2. 用CreateGraphics方法创建。
如果需要在Paint方法以外绘图,可以通过控件或窗体的CreateGraphics方法来获取Graphics对象。
None.gif private   void  button1_Click( object  sender, System.EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            Graphics g 
= button1.CreateGraphics();
InBlock.gif            
//画一个椭圆
InBlock.gif
            g.DrawEllipse(Pens.Red,5,5,button1.Width-10,button1.Height-10);
InBlock.gif            g.Dispose();
ExpandedBlockEnd.gif        }

3. 对Image对象调用Graphics.FromImage获取。
None.gif private   void  Form1_Paint( object  sender, System.Windows.Forms.PaintEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            
//创建Image对象
InBlock.gif
            Bitmap image1 = new Bitmap("football.jpg");
InBlock.gif            
//窗体的绘图对象
InBlock.gif
            Graphics formE = e.Graphics;
InBlock.gif            
//图像的绘图对象
InBlock.gif
            Graphics imageE = Graphics.FromImage(image1);
InBlock.gif            
//将第二幅图覆盖到第一幅的左上角
InBlock.gif
            imageE.DrawImage(new Bitmap("asdf.JPG"),new Rectangle(0,0,this.ClientSize.Width/2,this.ClientSize.Height/2));
InBlock.gif            
//将合成好的图像绘制在窗体上
InBlock.gif
            formE.DrawImage(image1,new Rectangle(0,0,this.ClientSize.Width,this.ClientSize.Height));
InBlock.gif
InBlock.gif            
//释放所有资源
InBlock.gif
            formE.Dispose();
InBlock.gif            imageE.Dispose();
InBlock.gif            image1.Dispose();
ExpandedBlockEnd.gif        }

转载于:https://www.cnblogs.com/lianyonglove/archive/2007/03/06/665662.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值