您好,欢迎访问一九零五行业门户网

c# GDI+简单绘图(二)

在上一片里已经向大家介绍了如何使用gdi+绘制简单的图像,这一片继续向大家介绍其它一些绘图知识.
1.首先我们来看下上一片中我们使用过的pen.
pen的属性主要有: color(颜色),dashcap(短划线终点形状),dashstyle(虚线样式),endcap(线尾形状), startcap(线头形状),width(粗细)等.
我们可以用pen 来画虚线,带箭头的直线等
pen p = new pen(color.blue, 5);//设置笔的粗细为,颜色为蓝色 graphics g = this.creategraphics(); //画虚线 p.dashstyle = dashstyle.dot;//定义虚线的样式为点 g.drawline(p, 10, 10, 200, 10); //自定义虚线 p.dashpattern = new float[] { 2, 1 };//设置短划线和空白部分的数组 g.drawline(p, 10, 20, 200, 20); //画箭头,只对不封闭曲线有用 p.dashstyle = dashstyle.solid;//恢复实线 p.endcap = linecap.arrowanchor;//定义线尾的样式为箭头 g.drawline(p, 10, 30, 200, 30); g.dispose(); p.dispose();
以上代码运行结果:
2.接下来我们来看下brush的使用
作用:我们可以用画刷填充各种图形形状,如矩形、椭圆、扇形、多边形和封闭路径等,主要有几种不同类型的画刷:
• solidbrush:画刷最简单的形式,用纯色进行绘制
• hatchbrush:类似于 solidbrush,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯色
• texturebrush:使用纹理(如图像)进行绘制
• lineargradientbrush:使用沿渐变混合的两种颜色进行绘制
• pathgradientbrush :基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制
我们这里只是简单介绍使用其中的几种:
graphics g = this.creategraphics(); rectangle rect = new rectangle(10, 10, 50, 50);//定义矩形,参数为起点横纵坐标以及其长和宽 //单色填充 solidbrush b1 = new solidbrush(color.blue);//定义单色画刷 g.fillrectangle(b1, rect);//填充这个矩形 //字符串 g.drawstring("字符串", new font("宋体", 10), b1, new pointf(90, 10)); //用图片填充 texturebrush b2 = new texturebrush(image.fromfile(@"e:\picture\1.jpg")); rect.location = new point(10, 70);//更改这个矩形的起点坐标 rect.width = 200;//更改这个矩形的宽来 rect.height = 200;//更改这个矩形的高 g.fillrectangle(b2, rect); //用渐变色填充 rect.location = new point(10, 290); lineargradientbrush b3 = new lineargradientbrush(rect, color.yellow , color.black , lineargradientmode.horizontal); g.fillrectangle(b3, rect);
运行效果图:
3.坐标轴变换
在winform中的坐标轴和我们平时接触的平面直角坐标轴不同,winform中的坐标轴方向完全相反:窗体的左上角为原点(0,0),水平向左则x增大,垂直下向则y增大
接下来,我们来实际操作下,通过旋转坐标轴的方向来画出不同角度的图案,或通过更改坐标原点的位置来平衡坐标轴的位置.
graphics g = this.creategraphics(); //单色填充 //solidbrush b1 = new solidbrush(color.blue);//定义单色画刷 pen p = new pen(color.blue,1); //转变坐标轴角度 for (int i = 0; i < 90; i++) { g.rotatetransform(i);//每旋转一度就画一条线 g.drawline(p, 0, 0, 100, 0); g.resettransform();//恢复坐标轴坐标 } //平移坐标轴 g.translatetransform(100, 100); g.drawline(p, 0, 0, 100, 0); g.resettransform(); //先平移到指定坐标,然后进行度旋转 g.translatetransform(100,200); for (int i = 0; i < 8; i++) { g.rotatetransform(45); g.drawline(p, 0, 0, 100, 0); } g.dispose();
运行效果图:
4.最后我们来看下graphics这个画板上我们还可以画什么
其实我们上面用到的都是在画一些简单的图形,直线,矩形,扇形,圆孤等,我们还可以用它来绘制图片,这可以用它的drawimage方法.这里我不详细讲解,大家有兴趣可以自己去msdn了解下.我们后面会讲到的截图就会用到这个方法.
更多c# gdi+简单绘图(二)。
其它类似信息

推荐信息