方法一、利用控件或窗体的Paint事件中的PainEventArgs

在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs(PaintEventArgs指定绘制控件所用的Graphics)的一部分,在为控件创建绘制代码时,通常会使用此方法来获取对图形对象的引用。

例如:

//窗体的Paint事件的响应方法

复制代码 代码如下:
private void form1_Paint(object sender, PaintEventArgs e)

{

Graphics g = e.Graphics;

}

也可以直接重载控件或窗体的OnPaint方法,具体代码如下所示:
复制代码 代码如下:
protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;

}

Paint事件在重绘控件时发生。

方法二、调用某控件或窗体的CreateGraphics方法

调用某控件或窗体的CreateGraphics方法以获取对Graphics对象的引用,该对象表示该控件或窗体的绘图图面。如果想在已存在的窗体或控件上绘图,通常会使用此方法。

例如:

Graphics g = this.CreateGraphics();

方法三、调用Graphics类的FromImage静态方法

由从Image继承的任何对象创建Graphics对象。在需要更改已存在的图像时,通常会使用此方法。

例如:

复制代码 代码如下:
//名为“g1.jpg”的图片位于当前路径下

Image img = Image.FromFile("g1.jpg");//建立Image对象

Graphics g = Graphics.FromImage(img);//创建Graphics对象

详细出处参考:http://www.jb51.net/article/36730.htm

(转)创建Graphics的三种方法的更多相关文章

  1. java创建线程的三种方法

    这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...

  2. 《Java多线程面试题》系列-创建线程的三种方法及其区别

    1. 创建线程的三种方法及其区别 1.1 继承Thread类 首先,定义Thread类的子类并重写run()方法: package com.zwwhnly.springbootaction.javab ...

  3. cocos2dx中创建动画的三种方法

    1.最最原始的方法,先创建动画帧,再创建动画打包(animation),再创建动画(animate) 第一步: 创建动画帧:CCSpriteFrame,依赖于原始的资源图片(xx.png,xx.jpg ...

  4. Java并发编程(二)创建线程的三种方法

    进程与线程 1.  进程 进程和代码之间的关系就像音乐和乐谱之间的关系一样,演奏结束的时候音乐就不存在了但乐谱还在:程序执行结束的时候进程就消失了但代码还在,而计算机就是代码的演奏家. 2. 线程 线 ...

  5. python 多线程编程之threading模块(Thread类)创建线程的三种方法

    摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的.当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作. 本节开始,我们开始介绍python的另外多线程模块thre ...

  6. JAVA中创建线程的三种方法及比较

    JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...

  7. MySQL创建用户的三种方法 (并授权)转

    前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...

  8. ORM 创建manytomay的三种方法 反向查询 和一些 双下方法版学员管理系统3

    老师信息管理   三种创建多对对外键的方式常用第二种和第三种 思考 三种方式创建多对多外键方式及其优缺点. 外键的查询和使用 1外键的创建: 在数据库表中的表现形式 如何连表查询和使用 表里边:  s ...

  9. Java中创建线程的三种方法以及区别

    Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...

随机推荐

  1. /etc/passwd和/etc/shadow

    这两个路径分别是用于存储密码和隐形密码 让我们先来观察它,在了解它 [root@oc3408554812 ~]# cat /etc/passwd |grep carltoncarlton    :   ...

  2. 分享记录我的Linux系统入门学习经验

    人生很多事情都是巧合,或者说命中注定.就拿Linux于我来说,大学期间也修了Linux基础这门课,但是从来没有想到自己会从事与Linux相关的工作,更没有想过自己可以通过Linux获取更多的东西. 真 ...

  3. Frame练习-打开图片

    import java.awt.EventQueue; import java.awt.event.*; import java.io.*; import javax.swing.*; public ...

  4. yarn 0.9.0 build spark

    1. 下载scala并安装.版本为2.10.3.设置SCALA_HOME和PATH环境变量 2. 下载SPARK 0.9.0源代码并解压到/root/Downloads/spark-0.9.0-inc ...

  5. python with语句

    作用:处理异常或进行资源清理等工作,让代码更加简练. 基本格式:with  statement as statement: do somthing....... statement会有一个返回对象,这 ...

  6. Ubuntu中添加eclipse

    环境:Ubuntu 14.04 步骤: 1.安装配置JDK,详见 http://my.oschina.net/u/1407116/blog/227084 2.下载eclipse 从官网http://w ...

  7. 如何在Kali Linux中搭建钓鱼热点

    文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 实验环境 操作系统:Kali 1.0 (VM) FackAP: easy-creds 硬件:NETGEAR wg ...

  8. Fragment开发计划

    Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ...

  9. OD调试篇7--笔记及解题报告

    MFC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows AP ...

  10. CentOS6.5安装openLdap

    一.关闭防火墙和selinux 关闭防火墙 chkconfig iptables off service iptables stop 关闭selinux vim /etc/selinux/config ...