gdi-C#GDI+画折线时候出现大红叉

问题描述

C#GDI+画折线时候出现大红叉


private void pictureBox1_Paint(object sender, PaintEventArgs e)
{ //定义坐标数组
double[,] yt = new double[60, 2]{ { 1.0000000e+00, 9.9939635e-01},
{ 2.0000000e+00 , 9.9945106e-01},
{ 3.0000000e+00 , 1.0019092e+00},
{ 4.0000000e+00 , 9.9956401e-01},
{ 5.0000000e+00 , 9.9969424e-01},
{ 6.0000000e+00 , 1.0019383e+00},
{ 7.0000000e+00 , 1.0008281e+00},
{ 8.0000000e+00 , 9.9989639e-01},
{ 9.0000000e+00 , 1.0000202e+00},
{ 1.0000000e+01 , 1.0001368e+00},
{ 1.1000000e+01 , 1.0012033e+00},
{ 1.2000000e+01 , 1.0003697e+00},
{ 1.3000000e+01 , 1.0004423e+00},
{ 1.4000000e+01 , 1.0000165e+00},
{ 1.5000000e+01 , 1.0002151e+00},
{ 1.6000000e+01 , 1.0008204e+00},
{ 1.7000000e+01 , 1.0000468e+00},
{ 1.8000000e+01 , 1.0009050e+00},
{ 1.9000000e+01 , 1.0005483e+00},
{ 2.0000000e+01 , 1.0013960e+00},
{ 2.1000000e+01 , 1.0002895e+00},
{ 2.2000000e+01 , 1.0004147e+00},
{ 2.3000000e+01 , 1.0012323e+00},
{ 2.4000000e+01 , 1.0018748e+00},
{ 2.5000000e+01 , 1.0006120e+00},
{ 2.6000000e+01 , 1.0010838e+00},
{ 2.7000000e+01 , 1.0011010e+00},
{ 2.8000000e+01 , 9.9965701e-01},
{ 2.9000000e+01 , 1.0007636e+00},
{ 3.0000000e+01 , 9.9904094e-01},
{3.1000000e+01 , 1.0012401e+00},
{3.2000000e+01 , 9.9855141e-01},
{3.3000000e+01 , 9.9893610e-01},
{3.4000000e+01 , 9.9815102e-01},
{ 3.5000000e+01 , 9.9806811e-01},
{ 3.6000000e+01 , 1.0028732e+00},
{ 3.7000000e+01 , 1.0017001e+00},
{ 3.8000000e+01 , 9.9865784e-01},
{ 3.9000000e+01 , 1.0049378e+00},
{ 4.0000000e+01 , 9.9677380e-01},
{ 4.1000000e+01 , 9.9942097e-01},
{ 4.2000000e+01 , 9.9885276e-01},
{4.3000000e+01 , 1.0032138e+00},
{4.4000000e+01 , 1.0037719e+00},
{4.5000000e+01 , 9.9677094e-01},
{4.6000000e+01 , 9.9987356e-01},
{4.7000000e+01 , 9.9930986e-01},
{4.8000000e+01 , 1.0020807e+00},
{4.9000000e+01 , 1.0031585e+00},
{5.0000000e+01 , 1.0040415e+00},
{5.1000000e+01 , 9.9684219e-01},
{5.2000000e+01 , 1.0029911e+00},
{5.3000000e+01 , 1.0026526e+00},
{5.4000000e+01 , 9.9484267e-01},
{5.5000000e+01 , 9.9403223e-01},
{5.6000000e+01 , 9.9997038e-01},
{5.7000000e+01 , 1.0096125e+00},
{5.8000000e+01 , 9.9704078e-01},
{5.9000000e+01 , 1.0017329e+00},
{6.0000000e+01 , 9.9469950e-01},};
//定义个用来储存转换类型的坐标数组
float[,] tg = new float[60, 2];
//转换数组类型
for (int i = 0; i <= yt.Length; i++)
{
for (int j = 0; j <= 1; j++)
{
tg[i, j] = (float)yt[i, j];

            };
        };

        //画布
        Bitmap bmap = new Bitmap(800, 400);
        Graphics gph = Graphics.FromImage(bmap);
        gph.Clear(Color.White);//画布颜色
        PointF cpt = new PointF(50, 200);//原点
        PointF[] xpt = new PointF[3]{new PointF(665,200), new PointF(650,208), new PointF(650,192)
    }; //用来绘制箭头
        Pen mypen = new Pen(Color.Black, 1);//绘制坐标直线的笔

        gph.DrawPolygon(mypen, xpt);//画箭头
        gph.FillPolygon(new SolidBrush(Color.Black), xpt);//填充箭头颜色
        //绘制坐标线条
        gph.DrawLine(mypen, cpt.X, cpt.Y, 650, 200);
        gph.DrawLine(mypen, cpt.X, 0, 50, 200);
        gph.DrawLine(mypen, cpt.X, cpt.Y, 50, 400);
        //绘制图像
        Pen ytpen= new Pen(Color.Blue,1);
        for (int t=0;t<=yt.Length-1 ;t++ )
        {   PointF A=new PointF(tg[t,0],tg[t,1]);
            PointF B=new PointF(tg[t+1,0],tg[t+1,1]);
            gph.DrawLine(ytpen,A,B);
        };

            //在piturebox插件上显示

            pictureBox1.Image = bmap;

    }

解决方案

没代码,只能给你几个链接了。
http://www.cnblogs.com/shengtianlong/archive/2010/06/12/1756989.html
http://www.cnblogs.com/peterzb/archive/2009/07/19/1526555.html

解决方案二:

只要你的paint代码丢出了异常,都是大红叉。所以具体还是请你自己调试下。

解决方案三:

说明绘制过程出错,可能有空对象,可能计算出错,比如除零,下个断点调试一下吧

时间: 2024-08-30 10:56:33

gdi-C#GDI+画折线时候出现大红叉的相关文章

绘图-用GDI画折线图长时间运行之后系统变慢

问题描述 用GDI画折线图长时间运行之后系统变慢 vc2010 mfc自己编写函数画折线图,传入一些离散的点然后绘制到图片控件上,程序刚运行时没有异常,但在较长时间(4小时左右)运行之后整个系统开始变的卡顿(比如打开其他文件变得缓慢),甚至无法绘制图形,程序中的按钮也不能点击,但是程序使用的内存和cpu也都正常,调试的时候绘图函数也有正常执行没有死循环,绘制的点也不多,求高手帮忙解答 解决方案 系统的句柄是否有泄露,造成资源泄漏.gdi资源是否及时释放. 解决方案二: 非常感谢!应该是图片控件使

gdi+-请教大家,用GDI+怎么绘制画图板的色调、饱和度的矩形。

问题描述 请教大家,用GDI+怎么绘制画图板的色调.饱和度的矩形. 就是ColorDialog的色调.饱和度的选择框,用什么绘制方法绘制. 解决方案 Rectangle会用当前画刷填充矩形 解决方案二: 自己解决了,遍历颜色创建位图贴上去!

求asp net gdi+-求asp.net gdi+ 图片上画一矩形并可以拖动

问题描述 求asp.net gdi+ 图片上画一矩形并可以拖动 网页上有一图片,在图片上画一个矩形RectangleF ,然后RectangleF用鼠标可以在图片上拖动位置,请大侠们指教!!!QQ:348517313

用代码画折线图/柱形图/条形图/饼图

饼图|折线图|柱形图 本文将介绍在.Net中如何使用代码画图表,就像用MS Excel生成的图表一样.也可以画像DataGrid一样的表格. 在.Net中,微软给我们提供了画图类(System.Drawing.Imaging),在该类中画图的基本功能都有.比如:直线.折线.矩形.多边形.椭圆形.扇形.曲线等等,因此一般的图形都可以直接通过代码画出来.接下来介绍一些画图函数:Bitmap bMap=new Bitmap(500,500) //定义图像大小:bMap.Save(Stream,Imag

GDI+编程基础(一)GDI+ Vs GDI

本文配套源码 一.GDI GDI是位于应用程序与不同硬件之间的中间层,这种结构让程序员从直接处理不同硬件的工作中解放出来,把硬件间的差异交给了GDI处理.GDI通过将应用程序与不同输出设备特性相隔离,使Windows应用程序能够毫无障碍地在Windows支持的任何图形输出设备上运行.例如,我们可以在不改变程序的前提下,让能在Epson点式打印机上工作的程序也能在激光打印机上工作.它把windows系统中的图形输出转换成硬件命令然后发送给硬件设备.GDI是以文件的形式存储在系统中,系统需要输出图形

托管C++中GDI+和GDI混合编程技术

1.引言 早期的Windows程序中,可以使用GDI(Graphics Device Interface,图形设备接口)在一个窗体中绘制图形.文本和图像,但它的功能比较有限,尤其是图像处理方面.GDI+是GDI的一个新版本,它不仅在GDI基础上添加许多新特性,而且对原有的GDI功能进行优化,并在为开发人员提供的二维矢量图形.文本.图像处理.区域.路径以及图形数据矩阵等方面构造了一系列相关的类.其中,图形类Graphics是GDI+接口中的一个核心类,许多绘图操作都可用它来完成. 与GDI相比,G

Windows GDI和GDI+区别(实例剖析)

1.概述         GDI在全称是Graphics Device Interface,即图形设备接口.是图形显示与实际物理设备之间的桥梁.GDI接口是基于函数,虽然使程序员省力不少,但是编程方式依然显得麻烦.例如显示一张位图,我们需要进行"创建位图,读取位图文件信息,启用场景设备,调色板变化"等一系列操作.然而有了GDI+,繁琐的步骤再次被简化.顾名思义,GDI+就是GDI的增强版,它是微软在Windows 2000以后操作系统中提供的新接口. 2.GDI+主要功能       

C#画折线图

折线图 using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlCon

android-achartengine画折线图怎样使某个点变为与其他点不同的颜色

问题描述 achartengine画折线图怎样使某个点变为与其他点不同的颜色 请问Android使用achartengine画折线图怎样使某个点变为与其他点不同的颜色 解决方案 http://blog.csdn.net/kmyhy/article/details/6584298 解决方案二: http://www.open-open.com/lib/view/open1396359314653.html 绘制出单独的点,完后改变颜色 解决方案三: http://blog.csdn.net/lk_