GDI+与图形编程研究
GDI+的基本概念
GDI+的常用对象,包括Graphics、Font、Brush、Pen等对象的创建和使用
常用图形的绘制
Color结构、Point结构和Rectangle结构
1.GDI+的概念
GDI+是GDI(Graphics Device Interface,图形设备接口)的改进产品。
2.GDI+的绘图命名空间
用户所使有的GDI+函数都保存在System.Drawing.d11程序集中。其中包括System.Drawing、System.Drawing.Text、System.Drawing.Printing、System.Drawing.Imaging、System.Drawing.Drawing2D和System.Drawing.Design等命名空间。
Graphics对象
(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象。
(2)使用窗体或控件的CreateGraphics方法
Graphics g=this.CreateGraphics();
(3)使用Image的派生类创建Graphics对象。使用Image的任何派生类均可以生成相应的Graphics对象,这种方法一般适用于在C#中对图像进行处理的场合。
Bitmap b=new Bitmap("Mybmp.bmp");
Graphics g=Graphics.FromImage(b);
Pen对象
Pen类的构造函数有四种,使用方法如下。
(1)创建某一颜色的Pen对象:public Pen(Color)
(2)创建某一刷子样式的Pen对象:public Pen(Brush)
(3)创建某—刷子样式并具有相应宽度的Pen对象:public Pen(Brush,float)
(4)创建某一颜色和相应宽度的Pen对象:public Pen(Color,float)
Pen对象的常用属性
(1)Alignment属性:用来获取或设置此Pen对象的对齐方式。
(2)Color属性:用来获取或设置此Pen对象的颜色。
(3)Width属性:用来获取或设置此Pen对象的宽度。
(4)DashStyle属性:用来获取或设置通过此Pen对象绘制的虚线的样式。
(5)DashCap属性:用来指定虚线两端风格,是一个DashCap枚举型的值。
(6)StartCap属性:用来获取或设置通过此Pen对象绘制的直线起点的帽样式。
(7)EndCap属性:用来获取或设置通过此Pen对象绘制的直线终点的帽样式。
(8)PenType属性:用来获取用此Pen对象绘制的直线的样式。
Font对象
Brush对象
1.SolidBrush画刷
SolidBrush类用来定义单一颜色的Brush,其构造函数如下。
public SolidBrush(Color.Color)
2.HatchBrush画刷
HatchBrush类的构造函数有两种,分别如下:
[格式1]:public HatchBrush(HatchStyle, Color);
[格式2]:public HatchBrush(HatchStyle, Color, Color); HatchBrush画刷具有三个属性,分别如下:
(1)BackgroundColor属性:获取此HatchBrush 对象的背景色。
(2)ForegroundColor属性:获取此HatchBrush 对象的前景色。
(3)HatchStyle属性:获取此HatchBrush 对象的阴影样式。
3.LinearGradientBrush画刷
LinearGradientBrush类的构造函数有多种格式,最常用的格式如下。
public LinearGradientBrush(Point1, Point2, Color1, Color2);
常用图形的绘制方法
1.画直线
[格式1]:public void DrawLine(Pen pen,int x1,int y1,int x2,int y2);
[格式2]:public void DrawLine(Pen pen,Point pt1,Point pt2);
2.画椭圆
[格式1]:public void DrawEllipse( Pen pen, Rectangle rect);
[格式2]:public void DrawEllipse(Pen pen,int x,int y,int width, int height);
3.绘制圆弧
[格式1]:public void DrawArc(Pen pen,Rectangle rect,float startAngle,float sweepAngle);
[格式2]:public void DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle);
4.画扇形图
使用Graphics对象的DrawPie方法可以绘制扇形图,所谓扇形图其实就是把一段圆弧的两个端点与圆心相连。DrawPie方法的格式与DrawArc方法基本一致。
5.画矩形
[格式1]: public void DrawRectangle( Pen pen, Rectangle rect);
[格式2]:public void DrawRectangle(Pen pen,int x,int y,int width,int height);
6.画Bezier曲线
[格式1]:public void DrawBezier(Pen pen,Point pt1,Point pt2,Point pt3,Point pt4);
[格式2]:public void DrawBezier(Pen pen,float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4);
7.画多边形
[格式1]:public void DrawPolygon(Pen pen, Point[] points);
[格式2]:public void DrawPolygon(Pen pen, PointF[] points);
8.绘制闭合曲线
[格式1]:public void DrawClosedCurve(Pen pen,Point[] points);
[格式2]:public void DrawClosedCurve(Pen pen,Point[] points,float tension,FillMode fillmode);
9.绘制非闭合曲线
[格式]:public void DrawCurve( Pen pen,Point[] points);
10.绘制路径
[格式]:public void DrawPath(Pen pen,GraphicsPath path);
11.填充椭圆
[格式1]:public void FillEllipse(Brush brush, Rectangle rect);
[格式2]:public void DrawEllipse(Brush brush,int x,int y,int width, int height);
12.填充矩形
[格式1]: public void FillRectangle( Brush brush, Rectangle rect);
[格式2]:public void FillRectangle(Brush brush,int x,int y,int width,int height);
13.填充饼图
[格式1]:public void FillPie(Brush brush,Rectangle rect,float startAngle,float sweepAngle)
[格式2]:public void FillPie(Brush brush,int x,int y,int width,int height,int startAngle,int sweepAngle);
GDI+与图形编程研究的更多相关文章
- 现代3D图形编程学习-关于本书(译)
本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...
- 现代3D图形编程学习-关于本书
关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬件,也成为了它们的必备特征. 对 ...
- 学废了系列 - WebGIS vs WebGL图形编程
目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...
- 现代3D图形编程学习-基础简介(3)-什么是opengl (译)
本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...
- 现代3D图形编程学习-基础简介(2) (译)
本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...
- 现代3D图形编程学习-基础简介(1) (译)
本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...
- 现代3D图形编程学习-环境设置
本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...
- .net学习之多线程、线程死锁、线程通信 生产者消费者模式、委托的简单使用、GDI(图形设计接口)常用的方法
1.多线程简单使用(1)进程是不执行代码的,执行代码的是线程,一个进程默认有一个线程(2)线程默认情况下都是前台线程,要所有的前台线程退出以后程序才会退出,进程里默认的线程我们叫做主线程或者叫做UI线 ...
- [ios]iOS 图形编程总结
转自:http://www.cocoachina.com/ios/20141104/10124.html iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL E ...
随机推荐
- Android如何调用第三方SO库
问题描述:Android如何调用第三方SO库:已知条件:SO库为Android版本连接库(*.so文件),并提供了详细的接口说明:已了解解决方案:1.将SO文件直接放到libs/armeabi下,然后 ...
- RubyWin32Api Win32OLE
#ruby提供了多种运行外部程序的方法 #1.%x %x不需要使用引号包含. #2. system方法 #3.exec类似system但是会中断当前的代码执行 #system和exec不能捕获执行程序 ...
- 移动对meta的定义
以下是meta每个属性详解 尤其要注意的是content里多个属性的设置一定要用分号+空格来隔开,如果不规范将不会起作用. 一.<meta http-equiv="Content-Ty ...
- java web 学习九(通过servlet生成验证码图片)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- Hadoop Configuration
Configuration的主要是加载配置文件,并储存在properties中. 细节内容不重复了,主要参考Hadoop技术内幕,Hadoop源代码,以及: http://blog.csdn.net/ ...
- linux 安装jdk 配置tomcat
Linux(ubuntu)下安装JDK.Tomcat 一.安装jdk 1)首先以root用户登录进去,在根目录下建立/usr/java的目录,我们将下载的东西都放到该目录下去. 2)参考的https: ...
- codeforces 675E Trains and Statistic 线段树+贪心统计
分析:这个题刚看起来无从下手 但是我们可以先简化问题,首先可以固定起点i,求出i+1到n的最小距离 它可以到达的范围是[i+1,a[i]],贪心的想,我们希望换一次车可以到达的距离尽量远 即:找一个k ...
- poj-3056 http://poj.org/problem?id=3056
http://poj.org/problem?id=3056 The Bavarian Beer Party Time Limit: 6000MS Memory Limit: 65536K Tot ...
- bjfu1164 Parity Game
简单规律题.首先想到的是,若01串中1有n个,则可以通过操作,使串中1的个数变为n-1.n-2……1.0个:第2个想到的是,如果n为奇数,可以通过操作,使串中1的个数最多变为n+1,而若n为偶数,则无 ...
- Away 3D 之 交互和渐变----Interactivity and Tweening
在这个教程中,你将学会如何创建一个地板对象,本教程中的地板是可交互的并且能够移动小方块到鼠标的点击的地方. 1. 设置场景: 你正在创建的场景包含了一个平面,地板和一个看起来像一个饰品的方块,还有一个 ...