C# GDI+简单绘图

一、使用Pen画笔

Pen的主要属性有:

Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等.

我们可以用Pen 来画虚线,带箭头的直线等。

            Pen p = new Pen(Color.Blue, 5);
            Graphics g = this.CreateGraphics();         //这里在load中不行,在Paint中可以?

            //画虚线
            p.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;   //定义虚线的样式为点
            g.DrawLine(p, 10, 10, 200, 10);

            //自定义虚线
            p.DashPattern = new float[] { 2, 1 };               //设置段划线和空白部分的数组
            g.DrawLine(p, 10, 20, 200, 20);

            //画箭头,只对不封闭曲线有用
            p.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;     //恢复实线
            p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;    //定义线尾的样式为箭头
            g.DrawLine(p, 10, 30, 200, 30);

            g.Dispose();
            p.Dispose();

运行后的效果:

二、Bush的使用

画刷的作用:可以用来填充个中形状,多边型、椭圆、扇形。。。。

  • SolidBrush:画刷最简单的形式,用纯色进行绘制
  • HatchBrush:类似于 SolidBrush,但是可以利用该类从大量预设的图案中选择绘制时要使用的图案,而不是纯色
  • TextureBrush:使用纹理(如图像)进行绘制
  • LinearGradientBrush:使用沿渐变混合的两种颜色进行绘制
  • PathGradientBrush :基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制
            Graphics g = this.CreateGraphics();         //这里在load中不行,在Paint中可以?
            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(@"D:\DOWNLOAD\sample.jpg"));
            rect.Location = new Point(10, 70);          //更改这个矩形的起点坐标
            rect.Width = 200;                           //更改这个矩形的宽
            rect.Height = 200;                          //更改这个矩形的高
            g.FillRectangle(b2, rect);

            //用渐变色填充
            rect.Location = new Point(10, 290);
            //需要using System.Drawing.Drawing2D;
            LinearGradientBrush b3 = new LinearGradientBrush(rect, Color.Yellow, Color.Black, LinearGradientMode.Horizontal);
            g.FillRectangle(b3, rect);

  运行效果:

三、坐标轴的转换

在winform中的坐标轴和我们平时接触的平面直角坐标轴不同,winform中的坐标轴方向完全相反:窗体的左上角为原点(0,0),水平向左则X增大,垂直下向则Y增大

接下来,我们来实际操作下,通过旋转坐标轴的方向来画出不同角度的图案,或通过更改坐标原点的位置来平衡坐标轴的位置.

            Graphics g = this.CreateGraphics();         //这里在load中不行,在Paint中可以?

            //单色填充
            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();

运行效果:

时间: 2024-10-05 04:50:43

C# GDI+简单绘图的相关文章

学习简单绘图DrawNode

学习简单绘图DrawNode 尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=1738 绘图的方式有两种: 使用OpenGL的绘图原语DrawPrimitives. 使用DrawNode. 本节中主要学习使用DrawNode来进行图形的绘制. [小知识] 分段数:即绘制曲线一般都是通过绘制“样条曲线”来实现,而分段数即样条段数. 二次贝塞尔曲线:起点终点之间的一条抛物线,利用一个控制点来控制抛物线的形状. 三次贝塞尔曲线:起点终点之间,利用两个控制点来

Delphi中使用GDI+进行绘图(1)

Delphi的VCL类库中,默认使用的是GDI绘图接口,该接口封装了Win32 GDI接口,能够满足基本的绘图功能,但如果要实现更高级的绘图功能,往往比较困难,GDI+是微软在GDI之后的一个图形接口,功能比GDI丰富很多,在VCL中使用GDI+,能够实现很多高级绘图功能. 目前有多种Delphi对GDI+的封装实现,以下介绍最简单的两种: 1.使用Delphi内置的GDI+接口 首先,创建一个VCL Form应用,窗口文件如下: Pascal Code 12345678910111213141

【4】 简单绘图(二)

在上一篇里已经向大家介绍了如何使用GDI+绘制简单的图像,这一篇继续向大家介绍其它一些绘图知识. 1.首先我们来看下上一篇中我们使用过的Pen. Pen的属性主要有: Color(颜色),DashCap(短划线终点形状),DashStyle(虚线样式),EndCap(线尾形状), StartCap(线头形状),Width(粗细)等. 我们可以用Pen 来画虚线,带箭头的直线等 Pen p = new Pen(Color.Blue, 5);//设置笔的粗细为,颜色为蓝色 Graphics g =

Android实战简易教程-第三枪(实现简单绘图组件)

首先我们要了解触摸事件(OnTouchListener)指的是当用户接触到屏幕之后所产生的一种事件形式,而当用户在屏幕上划过时,可以使用触摸事件取得用户当前的坐标. 一.坐标显示 在实现画图功能之前,我们先利用触摸事件获得当前触摸的坐标. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.c

GDI简单的图片处理

前天有个项目需求是在一张图片上面画些东西(点,线,圆等):目标:在Default2.aspx上显示一个可以自由处理的图片 下代码如下: 前台页面代码: Default2.aspx文件(需要显示处理后的图片页面) <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <!D

GDI,绘图

GDI绘图包括以下几部分: 1. 点和线的绘制 2. 绘制填充区域 点 SetPixel() 和  GetPixel() 是设置像素点 和 获取像素点. 理论上,所有图形设备驱动程序只需要实现 SetPixel()函数和 GetPixel()函数即可,其他一切都可以使用GDI模块中的更高层的程序来处理. 例如,画一条线,GDI可以不停地调整 x 和 y 坐标 , 然后连续 调用SetPixel函数即可绘制所有需要的图形. 但这会造成严重的性能问题.    因此如果一个图形系统(如GDI,或Ope

2019-04-15 Python之利用matplotlib和numpy的简单绘图

环境:win10家庭版, Anocada的 Spyder 一.简单使用 使用函数 plt.polt(x,y,label,color,width) 根据x,y 数组 绘制直,曲线 import numpy as np #引用numpy库,从新命名它为np(以后用np代替numpy,简洁) import matplotlib.pyplot as plt import matplotlib x = np.linspace(0,6,100) #在[0,6]平均分为100个print(x) #输出查看一下

turtle的简单绘图

接触python,就发现python是一门很有趣的课程.往往只需要利用几行简单的代码,就能绘制出简单漂亮的图案.毫不夸张的说,掌握好turtle库,就能绘制一整片蓝图.有时候,当我们遇到一些对称图形的时候,利用 for   in  循环语句,也能达到很好的效果.我们先了解一些关于turtle库的基本函数. turtle库的基本函数: 一.绘图窗口设置命令 ①turtle.setup(width,height,starty,starty)  注:(starty,starty)指的是绘图窗体左上角位

SAS简单绘图

利用sas gplot/gchart 模块,可以完成简单统计图的绘制. 1.条形图.环形图.饼图等等: proc gchart data=XXXXX; vbar varname; run; 这个过程包含若干选项,注意一点的是subgroup 和group选项的区别,subgroup不分开列,而group则对不同的组分开绘制: 2.散点图.线图等等 proc gplot data=xxxxx; plot y*x; run; 当同一张表上包含若干不同的线时,判断这若干条线是否共用同一坐标系.如果确实