文档章节

图形编程入门之如何创建用于绘制的 Graphics 对象

AK_47
 AK_47
发布于 2014/07/09 17:40
字数 969
阅读 22
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

       需要先创建 Graphics 对象,然后才可以使用 GDI+ 绘制线条和形状、呈现文本或显示与操作图像。Graphics 对象表示 GDI+ 绘图表面,是用于创建图形图像的对象。

 

处理图形包括两个步骤:

  1. 创建 Graphics 对象。

  2. 使用 Graphics 对象绘制线条和形状、呈现文本或显示与操作图像。

创建图形对象

可以用各种方法创建图形对象。

创建图形对象

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

    - 或 -

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

    - 或 -

  • 由从 Image 继承的任何对象创建 Graphics 对象。此方法在您需要更改已存在的图像时十分有用。

    下面的部分给出了有关这些过程的详细信息。

Paint 事件处理程序中的 PaintEventArgs

当对控件的 PaintEventHandler 编程时,需提供一个图形对象作为 PaintEventArgs 之一。

获取对 Paint 事件的 PaintEventArgs 中 Graphics 对象的引用

  1. 声明 Graphics 对象。

  2. 分配变量以引用作为 PaintEventArgs 的一部分传递的 Graphics 对象。

  3. 插入代码来绘制窗体或控件。

下面的示例演示了如何从 Paint 事件中的 PaintEventArgs 引用 Graphics 对象。

private void Form1_Paint(object sender, 
   System.Windows.Forms.PaintEventArgs pe) 
{
   // Declares the Graphics object and sets it to the Graphics object
   // supplied in the PaintEventArgs.
   Graphics g = pe.Graphics;
   // Insert code to paint the form here.
}

CreateGraphics 方法

也可以使用控件或窗体的 CreateGraphics 方法来获取对 Graphics 对象的引用,该对象表示该控件或窗体的绘图图面。

用 CreateGraphics 方法创建 Graphics 对象

  • 调用要用于呈现图形的窗体或控件的 CreateGraphics 方法。

  •  

  • Graphics g;
    // Sets g to a graphics object representing the drawing surface of the
    // control or form g is a member of.
    g = this.CreateGraphics();

 

从 Image 对象创建

另外,可以从 Image 类派生的任何对象创建图形对象。

从 Image 创建 Graphics 对象

下面的示例演示如何使用 Bitmap 对象:

 

Bitmap myBitmap = new Bitmap(@"C:/Documents and 
   Settings/Joe/Pics/myPic.bmp");
Graphics g = Graphics.FromImage(myBitmap);
     
     
     
     
     
   
     
   
     
   
      
Note注意

只能从非索引 .bmp 文件(如 16 位、24 位和 32 位的 .bmp 文件)创建 Graphics 对象。索引 .bmp 文件的像素将索引保存到颜色表中,相比而言,非索引 .bmp 文件的每个像素保存一种颜色。

绘制和操作形状与图像

Graphics 对象在创建后,可用于绘制线条和形状、呈现文本或显示与操作图像。与 Graphics 对象一起使用的主要对象有:

  • Pen 类 -- 用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。

  • Brush 类 -- 用于填充图形区域,如实心形状、图像或文本。

  • Font 类 -- 提供有关在呈现文本时要使用什么形状的说明。

  • Color 结构 -- 表示要显示的不同颜色。

使用创建的图形对象

请参见

© 著作权归作者所有

AK_47
粉丝 16
博文 533
码字总数 569998
作品 0
嘉定
程序员
私信 提问
Quartz 2D绘图

概况 是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境。我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制、透明度、描影、绘制阴影、透明层、颜色管理、反锯齿、PDF文档生成和...

_誌念
2017/08/26
0
0
[Winodows图形编程]初识双缓冲技术

为完成PaintBoardDemo(本人设计的一个基于.NET Framework的WinForm的画图程序),过程中遇到的技术难点之一就是就是要显示任何图形绘制过程中的轨迹,也即需要在pictureBox控件的MouseMove...

MistySoul
2013/03/24
314
0
iPhone之Quartz 2D系列--图形上下文(2)Graphics Contexts

以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 有关本章博客的代码实现,大家可以参考我的这遍博客:IOS用CGContextRef画各种图形(文字...

长平狐
2013/12/25
91
0
iOS开发系列--打造自己的“美图秀秀”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/47753221 --绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,...

KenshinCui
2015/08/18
0
0
Java学习笔记(三)Java2D组件

一 概述 Java2D的一切都基于java.awt包中的Graphics2D类,它是Graphics的子类。 为了绘制图形,需要使用面板作为画布,例如使用JPanel作为画布,面板有一个paintCompnent()方法,每当窗口发生...

qq570842253
2014/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何更改iOS应用程序的名称?

我前几天用一个愚蠢的开发代码名称开始了一个iPhone项目,现在我想改变项目的名称,因为它已经接近完成了。 但是我不知道如何使用Xcode来做这件事,尝试在info.plist文件中更改应用程序的名称...

技术盛宴
23分钟前
3
0
关于win10tensorflow的配置(CPU+GPU)

主要内容 CPU篇 GPU篇 【前期准备与注意事项】 环境:window1064位+python36(37)+CUDA9.0+cuDNN7.6+tensorflow_gpu-1.12.0 软件:anaconda+pycharm 硬件:有nvidia显卡的笔记本或台式(非A...

放只虎归个山
32分钟前
2
0
C#中的多行字符串文字

有没有一种简单的方法可以在C#中创建多行字符串文字? 这是我现在所拥有的: string query = "SELECT foo, bar"+ " FROM table"+ " WHERE id = 42"; 我知道PHP有 <<<BLOCKBLOCK; C#是......

javail
39分钟前
4
0
微信支付之小微商户扫盲!支持信用卡,免营业执照!

微信支付商户申请面向线下小微商户开放,符合条件的微信支付服务商可为小微商户发起接入申请。无需营业执照。 小微商户日收款额度为5万元~30万元 。 信用卡支付日限额为1千;月限额1万。 结算...

吴伟祥
今天
4
0
大话SDWebImage(三)-- 图片下载层

四、图片下载层 SDWebImageDownloader是处理图片下载的类 4.1 图片下载步骤 首先介绍下dispatch_barrier,GCD中的dispatch_barrier目的是在并发队列实现串行的效果,创建下载任务SDWebImageD...

aron1992
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部