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). 因为应用程序不能直 ...
随机推荐
- LIS n*log(n)的理解
很多时候lis 用二分的方法比较方便 这里写一下他的原理 这里仅对严格的最长上升子序列做讨论 这里有两个数列 一个数列是 原串的数列 a1-an 另一个数列是最长上升子序列辅助数列 s数列的长度为 ...
- CSS实现三角形效果
类似三角形的形状的元素在网页中可能会用到,我们可以用图片或者CSS元素达到我们想要的效果.这里讲一下是讲自己使用HTML+CSS实现三角形的方式. 为了能够熟悉的使用HTML+CSS构建三角形,我们首 ...
- python学习第十八天 --错误&异常处理
这一章节主要讲解python的错误和异常处理 什么是错误和异常?及其区别? 错误: 1.语法错误:代码不符合解释器或者编译器语法. 2.逻辑错误:不完整或者不合法输入或者计算出现问题. 异常:执行 ...
- Python subprocess执行持续输出shell命令的控制
研究了大半天,为了获取持续输出的shell指令结果,并对结果进行分析,一直因为无法控制subprocess开启的子进程头疼,研究了半天,参考众多大神的博客后,终于实现,目前已时间为控制点,在实际业务中 ...
- R语言学习网站
一个不错的个人R语言博客网站 http://blog.fens.me/r-overview/
- MVC4 路由参数带点 文件名后缀导致错误
错误描述 最近在研究office在线预览,用到mvc4 apicontroller 需要传参是文件名,如test.docx导致错误"指定的目录或文件在 Web 服务器上不存在", ...
- 转载的别人的ajax跨域解决方法
http://dynamic.vip.xxxxxx.com/active/<controllers>/<active>/<id> 放在浏览器地址栏中访问可以得到正确 ...
- css 画竖着线条
<p>table控制:<!-- height为横线的粗度,width为长度 --><table width=700> <tr> <t ...
- document.body.scrollTop vs document.documentElement.scrollTop
window.addEventListener("scroll", function () { if (document.body.scrollTop >= window.i ...
- webservice的几个简单概念
1.什么是JAX-WS? http://baike.baidu.com/view/1865210.htm?fr=aladdin 2.什么是JAX-RPC? http://baike.baidu.com ...