宝帅哥 2022-04-06 14:00 采纳率: 50%
浏览 82
已结题

C#利用pictureBox绘制类似chart控件,缩放没有chart控件流畅

问题:利用pictureBox绘制类似chart控件时(如下图),需要对pictrueBox控件进行缩放时,利用自定义比例(缩放比例)手动缩放pictureBox然后重新绘制图片时会比使用chart控件卡。为什么?
控件使用:折线图表pictureBox控件、坐标label控件、利用坐标绘制image显示到pictureBox控件上面。
自己理解:绘制东西太多,绘制随窗口缩放时,速度跟不上。不使用chart控件情况下,可以怎么优化呢?

img

        public void updataTabel(Chart chart, Point po)  //Chart为自定义的类,用于保存绘制坐标位置那些东西
        {
            chart.myImage.RotateFlip(RotateFlipType.Rotate180FlipXY);   //上下翻转,用于正向绘制
            chart.g.Clear(Color.FloralWhite);        //背景图片or颜色
            //chart.g.DrawImage(bitmap, chart.po_move_Origin.X,chart.po_move_Origin.Y,chart.new_size.Width,chart.new_size.Height);
            drawAxis( chart,  po);          //画轴线(X、Y)
            drawMousePosition( chart);      //显示鼠标坐标
            if (labels_updata)              //label(坐标)刷新
            {
                label_x_Move(chart);
                label_y_Move(chart);
                labels_updata = false;
            }
            if (true)                       //数据绘制
            {
                draw_datalist(chart);
            }
            //灰色背景
            chart.g.FillRectangle(new SolidBrush(Color.FromArgb(75, Color.Gray)), chart.po_move_Origin.X, chart.po_move_Origin.Y, chart.new_size.Width, chart.new_size.Height / 2);
            chart.g.FillRectangle(new SolidBrush(Color.FromArgb(75, Color.Gray)), chart.po_move_Origin.X, chart.po_move_Origin.Y, chart.new_size.Width, chart.new_size.Height / 4);
            chart.g.FillRectangle(new SolidBrush(Color.FromArgb(75, Color.Gray)), chart.po_move_Origin.X, chart.po_move_Origin.Y, chart.new_size.Width, chart.new_size.Height * 3 / 4);
            chart.g.DrawRectangle(chart.pen1, chart.r1);        //画外边框

            chart.myImage.RotateFlip(RotateFlipType.Rotate180FlipXY);
            chart.pictureBox.Image = chart.myImage;

        }

  • 写回答

2条回答 默认 最新

  • xuzuning 2022-04-06 17:11
    关注

    mschart 是 c 语言写的, c# 想在速度上超过他是不可能的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月14日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 请上面代码做什么处理或什么混淆
  • ¥15 英雄联盟自定义房间置顶
  • ¥15 W5500网线插上无反应
  • ¥15 如何用字典的Key,显示在WPF的xaml中
  • ¥15 weautomate读取Excel表格信息然后填写到网页一直报错,如何解决?
  • ¥15 C#如何在Webview2中获取网页验证码
  • ¥15 esp32烧录失败,具体情况在图片上
  • ¥15 selenium安装报错
  • ¥15 在node.js中无法安装yarn
  • ¥15 python程序修改