(转)创建Graphics的三种方法
方法一、利用控件或窗体的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的三种方法的更多相关文章
- java创建线程的三种方法
这里不会贴代码,只是将创建线程的三种方法做个笼统的介绍,再根据源码添加上自己的分析. 通过三种方法可以创建java线程: 1.继承Thread类. 2.实现Runnable接口. 3.实现Callab ...
- 《Java多线程面试题》系列-创建线程的三种方法及其区别
1. 创建线程的三种方法及其区别 1.1 继承Thread类 首先,定义Thread类的子类并重写run()方法: package com.zwwhnly.springbootaction.javab ...
- cocos2dx中创建动画的三种方法
1.最最原始的方法,先创建动画帧,再创建动画打包(animation),再创建动画(animate) 第一步: 创建动画帧:CCSpriteFrame,依赖于原始的资源图片(xx.png,xx.jpg ...
- Java并发编程(二)创建线程的三种方法
进程与线程 1. 进程 进程和代码之间的关系就像音乐和乐谱之间的关系一样,演奏结束的时候音乐就不存在了但乐谱还在:程序执行结束的时候进程就消失了但代码还在,而计算机就是代码的演奏家. 2. 线程 线 ...
- python 多线程编程之threading模块(Thread类)创建线程的三种方法
摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的.当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作. 本节开始,我们开始介绍python的另外多线程模块thre ...
- JAVA中创建线程的三种方法及比较
JAVA中创建线程的方式有三种,各有优缺点,具体如下: 一.继承Thread类来创建线程 1.创建一个任务类,继承Thread线程类,因为Thread类已经实现了Runnable接口,然后重写run( ...
- MySQL创建用户的三种方法 (并授权)转
前言:MySQL创建用户的方法分成三种:INSERT USER表的方法.CREATE USER的方法.GRANT的方法. 一.账号名称的构成方式 账号的组成方式:用户名+主机(所以可以出现重复的用户名 ...
- ORM 创建manytomay的三种方法 反向查询 和一些 双下方法版学员管理系统3
老师信息管理 三种创建多对对外键的方式常用第二种和第三种 思考 三种方式创建多对多外键方式及其优缺点. 外键的查询和使用 1外键的创建: 在数据库表中的表现形式 如何连表查询和使用 表里边: s ...
- Java中创建线程的三种方法以及区别
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...
随机推荐
- /etc/passwd和/etc/shadow
这两个路径分别是用于存储密码和隐形密码 让我们先来观察它,在了解它 [root@oc3408554812 ~]# cat /etc/passwd |grep carltoncarlton : ...
- 分享记录我的Linux系统入门学习经验
人生很多事情都是巧合,或者说命中注定.就拿Linux于我来说,大学期间也修了Linux基础这门课,但是从来没有想到自己会从事与Linux相关的工作,更没有想过自己可以通过Linux获取更多的东西. 真 ...
- Frame练习-打开图片
import java.awt.EventQueue; import java.awt.event.*; import java.io.*; import javax.swing.*; public ...
- 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 ...
- python with语句
作用:处理异常或进行资源清理等工作,让代码更加简练. 基本格式:with statement as statement: do somthing....... statement会有一个返回对象,这 ...
- Ubuntu中添加eclipse
环境:Ubuntu 14.04 步骤: 1.安装配置JDK,详见 http://my.oschina.net/u/1407116/blog/227084 2.下载eclipse 从官网http://w ...
- 如何在Kali Linux中搭建钓鱼热点
文中提及的部分技术可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使用! 0×00 实验环境 操作系统:Kali 1.0 (VM) FackAP: easy-creds 硬件:NETGEAR wg ...
- Fragment开发计划
Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ...
- OD调试篇7--笔记及解题报告
MFC:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows AP ...
- CentOS6.5安装openLdap
一.关闭防火墙和selinux 关闭防火墙 chkconfig iptables off service iptables stop 关闭selinux vim /etc/selinux/config ...