`
dzgwt2004
  • 浏览: 167787 次
  • 来自: 浙江杭州
社区版块
存档分类
最新评论

GDI绘图

360 
阅读更多
 public   void   draw(Page page,DataTable dt,int   Tnum)   
    {   
    //取得记录数量   
    int   count   =   dt.Rows.Count;   
    //记算图表宽度   
    int   wd   =   80   +   20   *   (count   -   1);   
    //设置最小宽度为800   
    if   (wd   <   800)   wd   =   800;   
    //生成Bitmap对像   
    Bitmap   img=new   Bitmap(wd,400);   
    //生成绘图对像   
    Graphics   g   =   Graphics.FromImage(img);   
    //定义黑色画笔   
    Pen   Bp   =   new   Pen(Color.Black);   
    //定义红色画笔   
    Pen   Rp   =   new   Pen(Color.Red);   
    //定义银灰色画笔   
    Pen   Sp   =   new   Pen(Color.Silver);   
    //定义大标题字体   
    Font   Bfont   =   new   Font("Arial",   12,   FontStyle.Bold);   
    //定义一般字体   
    Font   font   =   new   Font("Arial",   6);   
    //定义大点的字体   
    Font   Tfont   =   new   Font("Arial",   9);   
    //绘制底色   
    g.DrawRectangle(new   Pen(Color.White,   400),   0,   0,   img.Width,   img.Height);   
    //定义黑色过渡型笔刷   
    LinearGradientBrush   brush   =   new   LinearGradientBrush(new   Rectangle(0,   0,   img.Width,   img.Height),   Color.Black,   Color.Black,   1.2F,   true);   
    //定义蓝色过渡型笔刷   
    LinearGradientBrush   Bluebrush   =   new   LinearGradientBrush(new   Rectangle(0,   0,   img.Width,   img.Height),   Color.Blue,   Color.Blue,   1.2F,   true);   
    //绘制大标题   
    g.DrawString(dt.Rows[0]["Num"].ToString() + "本年慢病随访情况曲线图", Bfont, brush, 40, 5);   
    //取得当前发送量   
    int   nums=0;   
    for   (int   i   =   0;   i   <   count;   i++)   
    {
        nums += Convert.ToInt32(dt.Rows[i]["Num"]);   
    }   
    //绘制信息简报   
    string   info="首次随访时间:"+dt.Rows[0]["dc"].ToString()+"   曲线图生成时间:"+DateTime.Now.ToString()+"   随访次数:"+dt.Rows.Count.ToString()+"   当前发送总量:"+nums.ToString();   
    g.DrawString(info,   Tfont,   Bluebrush,   40,   25);   
    //绘制图片边框   
    g.DrawRectangle(Bp,   0,   0,   img.Width   -   1,   img.Height   -   1);   

    //绘制竖坐标线   
    for   (int   i   =   0;   i   <   count;   i++)   
    {   
    g.DrawLine(Sp,   40+20   *   i,   60,   40+20   *   i,   360);   
    }   

    //绘制时间轴坐标标签   
    for   (int   i   =   0;   i   <   count;   i+=2)   
    {   
    string   st   =   Convert.ToDateTime(dt.Rows[i]["dc"]).ToString("yyyy-MM-dd");   
    g.DrawString(st,   font,   brush,   30   +   20   *   i,   370);   } 
    //绘制横坐标线   
    for   (int   i   =   0;   i   <   10;   i++)   
    {   
    g.DrawLine(Sp,   40,   60+30*i,   40+20*(count-1),   60+30*i);   
    int   s   =   2500   -   50   *   i   *   5;   
    //绘制发送量轴坐标标签   
    g.DrawString(s.ToString(),   font,   brush,   10,   60   +   30   *   i);   
    }   

    //绘制竖坐标轴   
    g.DrawLine(Bp,   40,   55,   40,   360);   
    //绘制横坐标轴   
    g.DrawLine(Bp,   40,   360,   45   +   20   *   (count   -   1),   360);   

    //定义曲线转折点   
    Point[]   p   =   new   Point[count];   
    for   (int   i   =   0;   i   <   count;   i++)   
    {   
    p[i].X   =   40   +   20   *   i;
    p[i].Y = 360 - Convert.ToInt32(dt.Rows[i]["Num"]) / 5 * 3 / 5;   
    }   
    //绘制发送曲线   
    g.DrawLines(Rp,   p);   

    for   (int   i   =   0;   i   <   count;   i++)   
    {   
    //绘制发送记录点的发送量   
        g.DrawString(dt.Rows[i]["Num"].ToString(), font, Bluebrush, p[i].X, p[i].Y - 10);   
    //绘制发送记录点   
    g.DrawRectangle(Rp,   p[i].X   -   1,   p[i].Y   -   1,   2,   2);   
    }   
    //绘制竖坐标标题   
    g.DrawString("血压值",   Tfont,   brush,   5,   40);   
    //绘制横坐标标题   
    g.DrawString("随访时间",   Tfont,   brush,   40,   385);   


    //保存绘制的图片   
    MemoryStream   stream   =   new   MemoryStream();   
    img.Save(stream,   ImageFormat.Jpeg);   
    //图片输出   
    page.Response.Clear();   
    page.Response.ContentType = "image/jpeg";   
    page.Response.BinaryWrite(stream.ToArray());   
} 
分享到:
评论

相关推荐

    C# winform GDI 绘图板 源码 可实现铅笔绘图,直线、圆、椭圆、矩形绘图、可调整颜色、线宽,结构清晰,适合初学者研究

    在本文中,我们将深入探讨基于C# WinForm的GDI绘图板源码,这是一个非常适合初学者学习和研究的项目。GDI(Graphics Device Interface)是Windows操作系统中的一个图形库,用于处理图形输出,如绘制图像、文本以及...

    GDI绘图序列保存加载

    GDI绘图序列的保存主要是为了记录下一系列的绘图命令,以便于后续能够重新执行这些命令,恢复到之前的绘图状态。这在创建动态图形、动画或者需要多次绘制相同图形的场景中非常有用。序列保存通常涉及到以下步骤: 1...

    GDI绘图性能与效率的提高及改善

    本篇文章将深入探讨如何提高GDI绘图的性能和效率,并涉及到DirectDraw的相关技术。 首先,"基于MFC的DirectDraw高速图形绘制方法与应用.pdf"这篇文章可能会讨论如何利用Microsoft Foundation Class (MFC)库来整合...

    C#绘图移动GDI绘图鼠标拖动图像.rar

    本示例“C#绘图移动GDI绘图鼠标拖动图像”正是针对这一需求提供的一种解决方案,它利用了GDI+(Graphics Device Interface Plus)库来实现图像的绘制和拖动。 GDI+是.NET Framework中用于图形处理的基础组件,它...

    GDI绘图新手入门源代码

    这个压缩包“GDI绘图新手入门源代码”显然是为初学者准备的一份教程资源,通过源代码的形式,帮助他们理解和掌握如何在Windows环境下使用GDI进行图形编程。 GDI的主要知识点包括: 1. **基本概念**:GDI是Windows ...

    MFC_GDI绘图基础.rar_GDI绘图_GDI绘图 MFC_gdi_mfc绘图_绘图

    本资源"**MFC_GDI绘图基础.rar**"显然是一个关于如何在MFC应用中使用GDI进行图形绘制的学习资料,其包含的文档"**MFC_GDI绘图基础.doc**"可能详细讲解了这一主题。 首先,GDI是Windows操作系统内核的一部分,它提供...

    C#GDI绘图源码总结

    在C#中,你可以通过`Control.CreateGraphics()`方法获取到一个Graphics对象,用于在控件上绘制图形,就像我们的示例文件"CreateGraphics(GDI绘图)"所示。 4. **绘图基本元素**: - **Pen**:定义线条的样式,如...

    模拟屏幕 XML存储设置 GDI绘图 单例模式运用

    在IT领域,模拟屏幕、XML存储设置、GDI绘图以及单例模式是四个关键的概念。下面将分别详细解释这些知识点,并结合它们如何在实际应用中相互作用。 首先,模拟屏幕是指通过软件技术来创建一个虚拟的显示环境,通常...

    MFC中的GDI绘图

    MFC中的GDI绘图涉及到Windows编程中的图形设备接口(GDI)和设备环境(DC)的概念,以及MFC框架中对这些概念的封装和支持。GDI是Windows操作系统提供的一种接口,允许开发者创建图形和文本,将其绘制在屏幕上或者...

    鼠标操作矩形框GDI绘图可放大缩小,拖动矩形框

    在给定的“鼠标操作矩形框GDI绘图可放大缩小,拖动矩形框”主题中,我们将深入探讨如何使用GDI实现这些功能。 首先,我们需要理解GDI的基本概念。GDI是Windows API的一部分,它为应用程序提供了一组函数,允许程序...

    MFC的GDI绘图(TCS~T)

    在MFC中,你可以通过重载`OnPaint()`成员函数来执行GDI绘图。`OnPaint()`函数会在需要更新窗口时被系统调用,此时你可以使用GDI函数绘制窗口内容。 在`OnPaint()`中,你需要创建一个`CPaintDC`对象,它是`CDC`...

    c# 语言 Gdi 绘图怎么设置X轴和Y轴正方向

    下面将详细介绍如何在C#的GDI绘图中设置X轴和Y轴的正方向。 ### 一、理解GDI默认坐标系 首先,需要明确GDI默认的坐标系特点: - **原点**:位于绘图区域的左上角。 - **X轴**:从左到右为正方向。 - **Y轴**:从上...

    C#编写的GDi绘图工具

    在你提供的压缩包文件“GDI绘图项目”中,可能包含了一个简单的C#应用程序,演示了如何使用GDI+进行基本的图形绘制。通过学习和分析这个项目的源代码,你可以更深入地理解C#与GDI+的结合使用,以及如何将这些技术...

    C#GDI绘图C#GDI绘图C#GDI绘图

    在这个主题中,我们将深入探讨C# GDI绘图的关键概念和实践应用。 首先,理解GDI绘图的基本元素是至关重要的。这包括`Graphics`对象,它是实际执行绘图操作的主体;`Pen`对象,用于定义线条的样式、颜色和宽度;`...

    vc GDI绘图vc GDI绘图

    总之,VC++中的GDI绘图涉及到设备上下文、图形对象、绘图函数等多个概念,熟练掌握这些知识,能够帮助开发者创建出丰富多样的图形用户界面。通过不断的实践和学习,你将能够运用GDI自由地在Windows应用程序中绘制...

    C#PictureBox控件GDI绘图自定义图表控件类库

    在本案例中,我们关注的是"C#PictureBox控件GDI绘图自定义图表控件类库",这是一个利用C#的PictureBox控件和GDI+(Graphics Device Interface)进行图形绘制的库,旨在帮助开发者创建自定义的图表显示控件。...

    GDI绘图实现WINDOWS画板

    本项目“GDI绘图实现WINDOWS画板”旨在利用GDI来模仿并实现Windows附件中的画板程序,提供基本的绘画功能,如绘制线条、形状、填充颜色等,使得用户可以进行自由创作。 GDI的核心概念包括: 1. **设备上下文...

    wince下GDI绘图性能测试

    本文将围绕“wince下GDI绘图性能测试”这一主题,深入探讨GDI绘图的性能瓶颈、测试方法以及优化策略。 首先,我们要理解GDI绘图的基本原理。GDI是一种面向设备的编程模型,它允许程序员独立于特定硬件进行图形绘制...

    桌面GDI绘图示例

    首先,GDI绘图需要使用到Windows API函数,这些函数在Windows SDK中定义,包括创建设备上下文(Device Context,DC)、选择对象、设置绘图属性以及执行实际的绘图操作等。设备上下文是GDI的核心概念,它是Windows...

    GDI绘图--基础知识

    ### GDI+绘图基础知识详解 #### 一、GDI+概述 GDI+(Graphics Device Interface Plus)是一种用于Windows平台的图形设备接口技术,它提供了丰富的2D图形和图像处理功能。相比于传统的GDI(Graphics Device ...

Global site tag (gtag.js) - Google Analytics