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