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). 因为应用程序不能直 ...
随机推荐
- XAML 名称范围
XAML 名称范围存储 XAML 定义的对象名称和它们的对等实例之间的关系.此概念类似于其他编程语言和技术中的术语名称范围的更广泛的含义. 定义 XAML 名称范围的方式 XAML 名称范围中的名称使 ...
- cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现
目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...
- MySQL 聚簇索引
聚簇索引并不是一种单独的索引类型,而是一种数据存储方式.具体的细节依赖于其实现方式,但innoddb 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行. 当表有聚簇索引时,它的数据实际上存 ...
- C++ Primer 5th 第6章 函数
正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数 ...
- WinFrm访问MVC数据
WinFrm使用HttpWebRequest访问MVC中的Controller,以注册为例,客户端输入注册码后点击注册. WinFrm注册代码:代码中使用的是Post提交,UTF8编码方式. priv ...
- FJ省队集训最终测试 T3
思路:状态压缩dp,f[i][j[[k]代表i行j列这个格子,连续的状态为k,这个连续的状态是什么?就是下图 X格子代表我当前走到的地方,而这里的状态就是红色部分,也就是连续的一段n的状态,我们是分每 ...
- FJ省队集训DAY2 T1
思路:转换成n条三维空间的直线,求最大的集合使得两两有交点. 有两种情况:第一种是以某2条直线为平面,这时候只要统计这个平面上有几条斜率不同的直线就可以了 还有一种是全部交于同一点,这个也只要判断就可 ...
- Codeforces 159D Palindrome pairs
http://codeforces.com/problemset/problem/159/D 题目大意: 给出一个字符串,求取这个字符串中互相不覆盖的两个回文子串的对数. 思路:num[i]代表左端点 ...
- 将rcc.exe添加到系统Path
rcc不是内部或外部命令搜索下rcc.exe二进制文件的位置,然后将该路径添加到path环境变量中. 在cmd中输入path,显示当前的环境变量. 然后path = %path%;C:\Qt\4.8. ...
- MVC4.0 上传Excel并存入数据库
这里的这个功能实现在WebForm很好实现,上传阶段简单的一个FileUoLoad控件就搞定了,什么取值,什么上传都是浮云,微软都帮我们封装好了,我们只需要一拖一拽就OK了,但这些在MVC中是不行的! ...