资源简介
利用GDI+在Form中绘制60*60个圆点,显示帧速,使用三种不同方法,分别是:
1.直接绘制
2.使用双缓冲
3.使用BitBlt函数
对比三种函数的帧速,以及提速效果
开发环境为vs2008

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;
namespace BitBltTest
{
//[System.Runtime.InteropServices.DllImport(“gdi32.dll“)]
//private static extern int BitBlt(
// IntPtr hdcDest
// int nXDest
// int nYDest
// int nWidth
// int nHeight
// IntPtr hdcSrc
// int nXSrc
// int nYSrc
// System.Int32 dwRop // raster operation code
// );
public partial class Form1 : Form
{
Bitmap bitmap;
bool flag;
SolidBrush brushbrush1 brush2;
Graphics ClientDC memDC offScreenDC;
IntPtr hdc memdc;
//声明一个API函数
[System.Runtime.InteropServices.DllImportAttribute(“gdi32.dll“)]
private static extern bool BitBlt(
IntPtr hdcDest // 目标 DC的句柄
int nXDest
int nYDest
int nWidth
int nHeight
IntPtr hdcSrc // 源DC的句柄
int nXSrc
int nYSrc
System.Int32 dwRop // 光栅的处理数值
);
[DllImport(“gdi32.dll“ EntryPoint = “CreateCompatibleDC“)]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport(“gdi32.dll“ EntryPoint = “Selectobject“)]
public static extern IntPtr Selectobject(IntPtr hdc IntPtr hbitmap);
[DllImport(“gdi32.dll“ EntryPoint = “DeleteDC“)]
public static extern IntPtr DeleteDC(IntPtr hDc);
[DllImport(“gdi32.dll“ EntryPoint = “Deleteobject“)]
public static extern IntPtr Deleteobject(IntPtr bmp);
public Form1()
{
InitializeComponent();
bitmap = new Bitmap(600 600);
brush1 = new SolidBrush(Color.Red);
brush2 = new SolidBrush(Color.Blue);
}
private void timer1_Tick(object sender EventArgs e)
{
DateTime t = DateTime.Now;
ClientDC = this.CreateGraphics();
memDC = Graphics.FromImage(bitmap);
if (flag)
{
brush = brush1;
flag = false;
}
else
{
brush = brush2;
flag = true;
}
for (int j = 0; j < 60; j++)
{
for (int i = 0; i < 60; i++)
{
ClientDC.FillEllipse(brush i * 10 j * 10 10 10);
}
}
DateTime t2 = DateTime.Now;
TimeSpan sp = t2 - t;
float per = 1000 / sp.Milliseconds;
this.label1.Text = “速度“ + per.ToString() + “帧/秒“;
}
private void button1_Click(object sender EventArgs e)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11264 2013-07-02 21:26 BitBltTest\BitBltTest\bin\Debug\BitBltTest.exe
文件 26112 2013-07-02 21:26 BitBltTest\BitBltTest\bin\Debug\BitBltTest.pdb
文件 14328 2013-07-02 21:26 BitBltTest\BitBltTest\bin\Debug\BitBltTest.vshost.exe
文件 490 2009-06-11 05:14 BitBltTest\BitBltTest\bin\Debug\BitBltTest.vshost.exe.manifest
文件 3766 2013-07-02 19:47 BitBltTest\BitBltTest\BitBltTest.csproj
文件 6104 2013-07-02 21:26 BitBltTest\BitBltTest\Form1.cs
文件 4690 2013-07-02 20:07 BitBltTest\BitBltTest\Form1.Designer.cs
文件 6398 2013-07-02 20:07 BitBltTest\BitBltTest\Form1.resx
文件 817 2013-07-02 21:26 BitBltTest\BitBltTest\obj\Debug\BitBltTest.csproj.FileListAbsolute.txt
文件 847 2013-07-02 20:07 BitBltTest\BitBltTest\obj\Debug\BitBltTest.csproj.GenerateResource.Cache
文件 11264 2013-07-02 21:26 BitBltTest\BitBltTest\obj\Debug\BitBltTest.exe
文件 180 2013-07-02 20:07 BitBltTest\BitBltTest\obj\Debug\BitBltTest.Form1.resources
文件 26112 2013-07-02 21:26 BitBltTest\BitBltTest\obj\Debug\BitBltTest.pdb
文件 180 2013-07-02 19:47 BitBltTest\BitBltTest\obj\Debug\BitBltTest.Properties.Resources.resources
文件 491 2013-07-02 19:03 BitBltTest\BitBltTest\Program.cs
文件 1352 2013-07-02 19:03 BitBltTest\BitBltTest\Properties\AssemblyInfo.cs
文件 2870 2013-07-02 19:03 BitBltTest\BitBltTest\Properties\Resources.Designer.cs
文件 5612 2013-07-02 19:03 BitBltTest\BitBltTest\Properties\Resources.resx
文件 1095 2013-07-02 19:03 BitBltTest\BitBltTest\Properties\Settings.Designer.cs
文件 249 2013-07-02 19:03 BitBltTest\BitBltTest\Properties\Settings.settings
文件 920 2013-07-02 19:04 BitBltTest\BitBltTest.sln
..A..H. 7680 2013-07-02 19:04 BitBltTest\BitBltTest.suo
目录 0 2013-07-02 19:04 BitBltTest\BitBltTest\obj\Debug\TempPE
目录 0 2013-07-02 19:56 BitBltTest\BitBltTest\bin\Debug
目录 0 2013-07-02 21:26 BitBltTest\BitBltTest\obj\Debug
目录 0 2013-07-02 19:03 BitBltTest\BitBltTest\bin
目录 0 2013-07-02 19:03 BitBltTest\BitBltTest\obj
目录 0 2013-07-02 19:03 BitBltTest\BitBltTest\Properties
目录 0 2013-07-02 21:26 BitBltTest\BitBltTest
目录 0 2013-07-02 19:04 BitBltTest
............此处省略3个文件信息
- 上一篇:C#解线性方程组源代码
- 下一篇:c#实现局域网服务端向客户端内多文件的传输
相关资源
- C# OCR数字识别实例,采用TessnetOcr,对
- 考试管理系统 - C#源码
- asp.net C#购物车源代码
- C#实时网络流量监听源码
- C#百度地图源码
- Visual C#.2010从入门到精通配套源程序
- C# 软件版本更新
- C#屏幕软键盘源码,可以自己定制界面
- 智慧城市 智能家居 C# 源代码
- c#获取mobile手机的IMEI和IMSI
- C#实现简单QQ聊天程序
- 操作系统 模拟的 欢迎下载 C#版
- C#写的计算机性能监控程序
- 用C#实现邮件发送,有点类似于outlo
- MVC model层代码生成器 C#
- c#小型图书销售系统
- C# Socket Server Client 通讯应用 完整的服
- c# winform 自动登录 百度账户 源代码
- C#编写的16进制计算器
- C#TCP通信协议
- C# 数据表(Dataset)操作 合并 查询一
- C#语音识别系统speechsdk51,SpeechSDK51L
- 数据库备份还原工具1.0 C# 源码
-
[免费]xm
lDocument 节点遍历C# - EQ2008LEDc#开发实例
- DirectX.Capturec# winform 操作摄像头录像附
- c# 实现的最大最小距离方法对鸢尾花
- C#版保龄球记分代码
- C#自定义控件
- 基于c#的实验室设备管理系统621530
评论
共有 条评论