GDI+(Graphics Device Interface)例子
使用SolidBrush 单色画笔
Bitmap bitmap = new Bitmap(800, 600);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
SolidBrush mySolidBrush = new SolidBrush(Color.Yellow);
graphics.FillEllipse(mySolidBrush, 70, 20, 100, 50);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
img派生类的对象->画布->清理画布->声明画笔->画椭圆->把img存到内存流中->二进制数组从服务器发送到浏览器上
使用HatchBrush绘制简单图案
Bitmap bitmap = new Bitmap(200, 100);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
HatchBrush myhatchBrush = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Green, Color.Orange);
graphics.FillEllipse(myhatchBrush, 0, 0, 200, 100);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
img派生类的对象->画布->清理画布->声明画笔->画椭圆->把img存到内存流中->二进制数组从服务器发送到浏览器上
使用TextureBrush类绘制复杂图案
Bitmap bitmap = new Bitmap(400, 200);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
TextureBrush myTextureBrush = new TextureBrush(System.Drawing.Image.FromFile(Server.MapPath("~/4.jpg")));
graphics.FillEllipse(myTextureBrush, 0, 0, 400, 200);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
使用LinearGradientBrush类定义现行渐变
Bitmap bitmap = new Bitmap(200, 100);
Graphics graphics = Graphics.FromImage(bitmap);
graphics.Clear(Color.White);
Rectangle recctangle = new Rectangle(0, 0, 200, 100);
LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush(recctangle, Color.White, Color.Green, LinearGradientMode.ForwardDiagonal);
graphics.FillRectangle(myLinearGradientBrush, 0, 0, 200, 100);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
img派生类的对象->画布->清理画布->声明矩形->声明画笔->画矩形->把img存到内存流中->二进制数组从服务器发送到浏览器上
使用PathGradientBrush 类 实现彩色渐变
Bitmap bit = new Bitmap(400, 200);
Graphics g = Graphics.FromImage(bit);
g.Clear(Color.White);
Point centerPoint = new Point(100, 100);
int R = 100;
GraphicsPath path = new GraphicsPath();
path.AddEllipse(centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
PathGradientBrush myPathGradientBrush = new PathGradientBrush(path);
//指定路径中心点
myPathGradientBrush.CenterPoint = centerPoint;
//指定路径中心点的颜色
myPathGradientBrush.CenterColor = Color.DarkGreen;
//Color类型的数组指定与路径上每个顶点对应的颜色
myPathGradientBrush.SurroundColors = new Color[] { Color.Gold };
g.FillEllipse(myPathGradientBrush, centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
centerPoint = new Point(300, 100);
R = 33;
path = new GraphicsPath();
path.AddEllipse(centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R);
path.AddEllipse(centerPoint.X - 2 * R, centerPoint.Y - 2 * R, 4 * R, 4 * R);
path.AddEllipse(centerPoint.X - 3 * R, centerPoint.Y - 3 * R, 6 * R, 6 * R);
myPathGradientBrush = new PathGradientBrush(path);
myPathGradientBrush.CenterPoint = centerPoint;
myPathGradientBrush.CenterColor = Color.Gold;
myPathGradientBrush.SurroundColors = new Color[] { Color.Black, Color.Blue, Color.DarkGreen };
g.FillPath(myPathGradientBrush, path);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bit.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
绘制直线DrawLines
Pen pen = new Pen (Color.Black,3);
Point[] points={new Point(10,10),new Point(10,100),new Point(200,50),new Point(260,120)};
g.DradLines(pen,points);
绘制矩形Rectangle
1)
Rectangle rect= new Rectangle(0,0,80,50);
2)
Pen pen = new Pen (Color.Black,3);
Rectangles[] rects={new Rectangle(10,10,100,200),new Rectangle(100,200,250,50),new Rectangle(300,10,50,100)}
g.DrawRectangles(pen,rects);
绘制椭圆
DrawEllipse(Pen pen,Rectangle rect);
DrawEllipse(Pen pen,Int x,Int y,int width,int height);
绘制圆弧
DrawArc(Pen pen,Rectangle rec,float starAngle,float sweepAngle)
DrawArc(Pen pen,int x,int y,int width,int height,int startAngle,int sweepAngle)
绘制扇形
DrawPie
画直线
1)public void DrawLine(Pen pen,int x1,int y1,int x2,int y2)
2)public void DrawLine(Pen pen,Point pt1,Point pt2)
画矩形
DrawRectangle
画椭圆
DrawEllipse
画圆弧
DrawArc
画扇形
DrawPie
多边形
Graphics ghs = Graphics.FromImage(bitmap);
ghs.Clear(Color.White);
Pen myPen = new Pen(Color.Black, 3);
Point point1 = new Point(80, 20);
Point point2 = new Point(40, 50);
Point point3 = new Point(80, 80);
Point point4 = new Point(160, 80);
Point point5 = new Point(200, 50);
Point point6 = new Point(160, 20);
Point[] myPoints = { point1, point2, point3, point4, point5, point6 };
ghs.DrawPolygon(myPen, myPoints);
柱状图(投票例子):
protected void Page_Load(object sender, EventArgs e)
{
int Sum = 100;
int v1 = 12;
int v2 = 20;
int v3 = 50;
int v4 = 15;
float p1 = 100 * Convert.ToSingle(v1) / Convert.ToSingle(Sum);
float p2 = 100 * Convert.ToSingle(v2) / Convert.ToSingle(Sum);
float p3 = 100 * Convert.ToSingle(v3) / Convert.ToSingle(Sum);
float p4 = 100 * Convert.ToSingle(v4) / Convert.ToSingle(Sum);
int width = 300, height = 300;//宽度和高度
Bitmap bitmap = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bitmap);
try
{
g.Clear(Color.White);
//创建6个brush对象 ,用于填充颜色
Brush brush1 = new SolidBrush(Color.White);
Brush brush2 = new SolidBrush(Color.Black);
Brush brush3 = new SolidBrush(Color.Red);
Brush brush4 = new SolidBrush(Color.Green);
Brush brush5 = new SolidBrush(Color.Orange);
Brush brush6 = new SolidBrush(Color.DarkBlue);
//创建连个Font对象,用于设置字体
Font font1 = new Font("Courier New", 16, FontStyle.Bold);
Font font2 = new Font("Courier New", 8);
g.FillRectangle(brush1, 0, 0, width, height);
g.DrawString("投票结果", font1, brush2, new Point(90, 20));
//设置坐标
Point point1 = new Point(70, 50);
Point point2 = new Point(230, 50);
g.DrawLine(new Pen(Color.Black), point1, point2);
//设置文字
g.DrawString("文字111", font2, brush2, new Point(10, 80));
g.DrawString("文字222", font2, brush2, new Point(32, 110));
g.DrawString("文字333", font2, brush2, new Point(32, 140));
g.DrawString("文字444", font2, brush2, new Point(54, 170));
//绘制柱状图
g.FillRectangle(brush3, 95, 80, p1, 17);
g.FillRectangle(brush4, 95, 110, p2, 17);
g.FillRectangle(brush5, 95, 140, p3, 17);
g.FillRectangle(brush6, 95, 170, p4, 17);
//绘制所有选项的票数显示
g.DrawRectangle(new Pen(Color.Green), 10, 210, 280, 80);//绘制范围框
g.DrawString("文字111" + v1.ToString() + "票", font2, brush2, new Point(15, 220));
g.DrawString("文字222" + v2.ToString() + "票", font2, brush2, new Point(150, 220));
g.DrawString("文字333" + v3.ToString() + "票", font2, brush2, new Point(15, 260));
g.DrawString("文字444" + v4.ToString() + "票", font2, brush2, new Point(150, 260));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
Response.ClearContent();
Response.ContentType = "image/Jpeg";
Response.BinaryWrite(ms.ToArray());
}
catch (Exception ex)
{
}
}
GDI+(Graphics Device Interface)例子的更多相关文章
- GDI+(Graphics Device Interface)
1创建画布(创建Graphics对象) Bitmap bitmap = new Bitmap(80,80); Graphics g=Graphics.FromImage(bitmap); 2创建Pen ...
- [转]C#中基于GDI+(Graphics)图像处理系列之前言
直接给出原文链接吧: C#中基于GDI+(Graphics)图像处理系列之前言 链接:https://pan.baidu.com/s/1zm5TCOHqkqEfiLZuqO0UMA 提取码:qz0h
- day20 GUI(Graphics User Interface)
顶层容器:JWindow.JFrame.JDialge.JAsplet JFrame,默认布局是边界布局 JFrame的内容面板是:Container. 面板容器:JPanel,默认布局是流布局. 布 ...
- C# GDI graphics.DrawImage 的参数问题
graphics.DrawImage(imageSource, new System.Drawing.Point[] { ,), , ), , ), } ); graphics.DrawImage(i ...
- C#中基于GDI+(Graphics)图像处理系列
https://blog.csdn.net/lhtzbj12/article/details/54024821
- 超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ (*^_^*) 本人也为了学习深刻,另一方面也是为了 ...
- [转]超全面的.NET GDI+图形图像编程教程
本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Gr ...
- 【笨嘴拙舌WINDOWS】GDI(1)
GDI:Graphics Device Interface 图形设备接口. 操作系统从命令行界面到图形界面的过度是施乐公司实验室对计算机普及作出的不可估量的贡献,苹果公司乔布斯与微软公司比尔盖茨对其的 ...
- Winform GDI+
什么是GDI+ GDI (Graphics Device Interface), 是属于绘图方面的 API (Application Programming Interface). 因为应用程序不能直 ...
随机推荐
- Asp.Net WebApi+Microsoft.AspNet.WebApi.Core 启用CORS跨域访问
WebApi中启用CORS跨域访问 1.安装 Nugget包Microsoft.AspNet.WebApi.Cors This package contains the components to e ...
- 为什么class中属性以空格分隔?
1 div.contain .blue{color:blue;}/*后代选择器*/2 div.contain.blue{color:blue;} /*多类选择器*/ 以上两种规则分别应用的元素如下: ...
- MS SQL到Oracle的数据迁移笔记
MS SQL到Oracle的数据迁移笔记 一.任务背景 旧系统使用MS SQL Server数据库,新系统使用Oracle数据库,现在需要将旧系统中的数据迁移到新系统中,旧数据按照约定的规则转换后,能 ...
- iOS_SN_地图的使用(2)
上一篇讲的是地图的基本使用,和注意事项,这一篇主要讲POI检索.百度地图SDK提供三种类型的POI检索:周边检索.区域检索和城市内检索.下面将以周边检索为例,向大家介绍如何使用检索服务. - (voi ...
- nginx_http核心模块(二)
对一些常用的配置项做一些解释:详细请看官方文档:http://nginx.org/en/docs/http/ngx_http_core_module.html 1. alias Syntax: ali ...
- [Mugeda HTML5技术教程之11]Mugeda API简介
一.API 概述 Mugeda API 提供了一个简单的,结构化的方法来实时动态管理Mugeda内容.它提供了一下方法: •访问Mugeda内容中的对象. •获取和设置对象属性,如位置.旋转.比例.不 ...
- android手机端保存xml数据
1.前面写的这个不能继续插入数据,今天补上,当文件不存在的时候就创建,存在就直接往里面添加数据. 2.代码如下: <pre name="code" class="j ...
- 如何用VS2010打开VS2012编辑的项目
找到打开项目的开始图标:,右键点击,选择有文本编辑器打开,用下面的语句将文件里面的前两句替换掉.Microsoft Visual Studio Solution File, Format Versi ...
- Qt使用MinGW编译,如何忽略警告
Qt编译时经常出现以下警告: warning: unused parameter 'arg1' [-Wunused-parameter] warning: unused variable 'i' [- ...
- mysql出现错误“ Every derived table must have its own alias”
Every derived table must have its own alias 这句话的意思是说每个派生出来的表都必须有一个自己的别名 一般在多表查询时,会出现此错误. 因为,进行嵌套查询的时 ...