C#绘图基本方法实例总结

目录
  • 一、得到Graphics对象
    • 1.OnPaint事件中使用
    • 2.其他情况实现
  • 二、关于Graphics的释放
  • 三、Pen 画笔
    • 1.Pen
    • 2.画笔属性
  • 四 Brush 画刷
  • 五 绘制文本
    • 1.Font类
  • 六、DrawString 方法
  • 七、处理重绘和无效操作
    • 1.调用以下几个方法
    • 2.双缓冲技术
  • 总结

一、得到Graphics对象

1.OnPaint事件中使用

Protected overrid void OnPaint(PaintEventArgs e)
{
    Graphics g=e.Graphics;
    ......
}

2.其他情况实现

Graphics g=this.CreaateGraphics();

二、关于Graphics的释放

1.对于CreateGraphics()得到的Graphics对象;

2.系统会自动释放,也可以显式地释放;

g.Dispose();

3.用这样也可以 using(Graphics g=this.CreateGraphics())

{…}

这种写法,相当于try{…}finally{g.Dispose();}

三、Pen 画笔

1.Pen

① 在System.Drawing名称空间中;

② 用来指定图形的轮廓,如颜色和宽度等;

③ 画笔创建

Pen pen=new Pen(Color.Blue,5);

④ 使用Pens类,直接用系统定义好的Pen
如 Pens.Red Pens.Blue;

2.画笔属性

四 Brush 画刷

1.Brush是一个抽象类,不能被直接new实例化

2.它有5个派生类,分别实现不同类型的画刷

① SolideBrush:实心画刷(最简单)

② HatchBrush:带阴影线的画刷;

③ LinearGradientBrush 填充颜色线性渐变的画刷;

④ PathGradientBrush 填充颜色沿着路径渐变的画刷;

⑤ TextureBrush 使用图像进行填充的画刷

3.使用Brushes类

Brushes.Red,Brushes.Yellow;

五 绘制文本

1.Font类

1)FontFamily 字体家族,如Times New Roman 字体等;

2)字体大小:float类型

3) 字体风格

① Bold 粗体;

② Italic 斜体;

③ Regular 正规;

④ Strikeout 加删除线;

⑤ UnderLine 加下斜线;

2.例如

Font myFont=new Font(“宋体”,16,FontStyle.Bold|FontStyle.Italic);

以上代码创建了宋体家族的字体对象,字体大小为16 ,样式为粗斜体。

这里用“|”(按拉或)运算来组合字体的风格;

六、DrawString 方法

DrawString(string,Font,Brush,PointF);
DrawString(string,Font,Brush,RectagleF);
DrawString(string,Font,Brush,PointF,StringFormat);
DrawString(string,Font,Brush,RectagleF,StringFormat);
DrawString(striing,Font,Brush,float,float);
DrawString(string,FOnt,Brush,float,float,StringFormat);

七、处理重绘和无效操作

1.调用以下几个方法

① void Invalidate();

void Invalidate(Rectangle);

使用控件的特定区域无效并想控件发送绘制消息;

② void Update()

使空间重绘其工作区域内的无效区域;

③ void Refresh()

相当于 this.Invalidate(true);this.Update();

2.双缓冲技术

1) 在内存中建立一块“虚拟画布”

Bitmap bmp=new Bitmap(600,600);

2) 获取这块内存画布的Graphics引用

Graphics g=Graphics.FromImage(bmp);

3) 在这块内存画布上绘图

g.FillEllipse(brush,i10,j10,10,10);
g.DrawLine() g.DrawString()等等;

4) 将内存画布画到窗口中

this.CreateGraphics().DrawImage(bmp,0,0);

总结

到此这篇关于C#绘图基本方法的文章就介绍到这了,更多相关C#绘图方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#打印绘图的实现方法

    本文实例讲述了C#打印绘图的实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: String drawString = ""; Font drawFont = null; SolidBrush drawBrush = null; float x = 0F; float y = 0F; StringFormat drawFormat = new StringFormat(); string test = ""; public string Tes

  • C#绘图基本方法实例总结

    目录 一.得到Graphics对象 1.OnPaint事件中使用 2.其他情况实现 二.关于Graphics的释放 三.Pen 画笔 1.Pen 2.画笔属性 四 Brush 画刷 五 绘制文本 1.Font类 六.DrawString 方法 七.处理重绘和无效操作 1.调用以下几个方法 2.双缓冲技术 总结 一.得到Graphics对象 1.OnPaint事件中使用 Protected overrid void OnPaint(PaintEventArgs e) { Graphics g=e.

  • 利用matplotlib+numpy绘制多种绘图的方法实例

    前言 matplotlib 是Python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.本文将以例子的形式分析matplot中支持的,分析中常用的几种图.其中包括填充图.散点图(scatter plots).. 条形图(bar plots).等高线图(contour plots). 点阵图和3D图,下面来一起看看详细的介绍: 一.填充图 参考代码 from matplotlib.pyplot import * x=linspace(-3,3,100) y

  • python读取nc数据并绘图的方法实例

    目录 获取nc数据的相关信息 绘图 用matplotlib绘图 用Basemap绘图 用Cartopy绘图 总结 获取nc数据的相关信息 from netCDF4 import Dataset import numpy as np import pandas as pd import os import matplotlib.pyplot as plt path = "F:\\OCO2.SIF.all.daily.2001.nc" csv_path = "F:\\test.c

  • Java绘图技术基础(实例讲解)

    如下所示: public class Demo1 extends JFrame{ MyPanel mp=null; public static void main(String[] args){ Demo1 demo=new Demo1(); } public Demo1(){ mp=new MyPanel(); this.add(mp); this.setSize(400,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); th

  • jq源码解析之绑在$,jQuery上面的方法(实例讲解)

    1.当我们用$符号直接调用的方法.在jQuery内部是如何封装的呢?有没有好奇心? // jQuery.extend 的方法 是绑定在 $ 上面的. jQuery.extend( { //expando 用于决定当前页面的唯一性. /\D/ 非数字.其实就是去掉小数点. expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready wit

  • Springmvc ajax跨域请求处理方法实例详解

    上次给一个网站写网站  前后端分离 最后跪在ajax跨域上面了  自己在网上找了个方法  亲试可用  记录一下 写一个类  继承HandlerInterceptorAdapter package com.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.Ha

  • innodb_flush_method取值方法(实例讲解)

    innodb_flush_method的几个典型取值 fsync: InnoDB uses the fsync() system call to flush both the data and log files. fsync is the default setting. O_DSYNC: InnoDB uses O_SYNC to open and flush the log files, and fsync() to flush the data files. InnoDB does no

  • AJAX跨域请求数据的四种方法(实例讲解)

    由于浏览器的同源策略 ajax请求不可以接收到请求响应回来的数据 请求数据需要调用浏览器的内置构造函数 XMLHttpRequest() 进行 实例对象 var xhr = new XMLHttpRequest(); 注意点 在IE8之前支持的 ActiveXobject("Microsoft.XMLHTTP");  记住要进行兼容处理哦  在这里我就不写了 通过该对象进行获取 获取数据的四种状态  xhr.readyState 该属性保存着请求数据的几种状态 1.xhr.open(请

  • Linux traceroute命令使用方法实例详解

    Linux traceroute命令使用方法实例详解 一.默认使用的是UDP协议(30000以上端口) 二.使用TCP协议 -T -p 三.使用ICMP协议 -I 四.实战 [root@localhost hping-master]# whereis traceroute traceroute: /usr/bin/traceroute /usr/share/man/man8/traceroute.8.gz [root@localhost hping-master]# [root@localhos

  • Oracle表中重复数据去重的方法实例详解

    Oracle表中重复数据去重的方法实例详解 我们在项目中肯定会遇到一种情况,就是表中没有主键 有重复数据 或者有主键 但是部分字段有重复数据 而我们需要过滤掉重复数据 下面是一种解决方法 delete from mytest ms where rowid in (select aa.rid from (select rowid as rid, row_number() over(partition by s.name order by s.id) as nu from mytest s) aa

随机推荐